ЭТО НЕ ОТВЕТ
Я знаю, что это старый вопрос, но, возможно, кто-то нашел решение. У меня есть настройки, аналогичные настройкам автора, но требуется только уровень идентификации:
Серверная сторона:
Dictionary<string, object> properties = new Dictionary<string, object>();
properties["authorizedGroup"] = GetUsersGroupName();
properties["name"] = configuration.ServiceShortName + ".Server";
properties["portName"] = configuration.ServiceGuid;
BinaryServerFormatterSinkProvider sinkProvider = new BinaryServerFormatterSinkProvider();
sinkProvider.TypeFilterLevel = TypeFilterLevel.Full;
Channel = new IpcServerChannel(properties, sinkProvider);
Channel.IsSecured = true;
ChannelServices.RegisterChannel(Channel, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(AppManagerServer), configuration.ServerObjectUrl, WellKnownObjectMode.SingleCall);
string GetUsersGroupName()
{
const string builtInUsersGroup = "S-1-5-32-545";
SecurityIdentifier sid = new SecurityIdentifier(builtInUsersGroup);
NTAccount ntAccount = (NTAccount)sid.Translate(typeof(NTAccount));
return ntAccount.Value;
}
Клиентская сторона:
channel = new IpcClientChannel(AppManagerConfiguration.Instance.ServiceShortName + ".Client", null);
ChannelServices.RegisterChannel(channel, true);
string appManagerUrl = "ipc://" + AppManagerConfiguration.Instance.ServiceGuid + "/" + AppManagerConfiguration.Instance.ServerObjectUrl;
(IAppManager)Activator.GetObject(typeof(IAppManager), appManagerUrl).DoSomething();
И тогда я периодически получаю следующее:
Произошла ошибка при обработке запроса на сервере: System.Security.SecurityException: не удалось открыть маркер безопасности анонимного уровня.
в System.Security.Principal.WindowsIdentity.GetCurrentInternal (TokenAccessLevels requiredAccess, Boolean threadOnly)
в System.Security.Principal.WindowsIdentity.GetCurrent ()
в System.Runtime.Remoting.Channels.Ipc.IpcServerTransportSink.ServiceRequest (состояние объекта)
Зона сборки, которая провалилась, была:
MyComputer