Имам нужда от услуга на 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();
Код от проксито на клиента...
_serviceFactory = new ChannelFactory<IMyService>
(
new NetNamedPipeBinding(),
"net.pipe://localhost/MyService"
);
...
IMyService clientProxy = _serviceFactory.CreateChannel();
clientProxy.SomeMethod();
Този проблем изглежда е свързан с контекста на сигурността, в който се изпълняват услугите на Windows, който пречи на крайната точка, хоствана от приложението WinForms, да бъде видима за услугата, но не и обратното.
АКТУАЛИЗАЦИЯ:
Опитах се да променя обвързването от NetNamedPipeBinding на NetTcpBinding и изглежда, че работи добре с този тип обвързване.