Мне требуется, чтобы служба Windows выполняла вызовы WCF для службы, размещенной в приложении WinForms.
К сожалению, при попытке вызова службе Windows не удается обнаружить конечную точку.
Я пыталсяизменив свойства входа в систему для службы Windows, чтобы разрешить взаимодействие с рабочим столом, однако это не помогло.
Я использовал точно такой же код хостинга (как в приложении WinForms) в консольном приложении иСлужба Windows не находит конечную точку без проблем.
Любая помощь будет принята с благодарностью ...
Код для размещения службы в приложении WinForms.
_myServiceHost = new ServiceHost(typeof(MyService);
_myServiceHost.AddServiceEndpoint
(
typeof (IMyService),
new NetNamedPipeBinding(),
@"net.pipe://localhost/MyService"
);
_myServiceHost.Open();
Код от клиентаproxy ...
_serviceFactory = new ChannelFactory<IMyService>
(
new NetNamedPipeBinding(),
"net.pipe://localhost/MyService"
);
...
IMyService clientProxy = _serviceFactory.CreateChannel();
clientProxy.SomeMethod();
Эта проблема, по-видимому, связана с контекстом безопасности, в котором работают службы Windows, который не позволяет конечной точке, размещенной в приложении WinForms, быть видимой для службы, но не наоборот..
ОБНОВЛЕНИЕ:
Я попытался изменить привязку с NetNamedPipeBinding на NetTcpBinding, и кажется,хорошо работать с этим типом привязки.