WCF: служба Windows не может найти конечную точку при размещении в приложении Winforms - PullRequest
0 голосов
/ 26 июля 2010

Мне требуется, чтобы служба 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, и кажется,хорошо работать с этим типом привязки.

1 Ответ

1 голос
/ 26 июля 2010

Вы уверены, что у вас на месте app.config и вы открыли хост службы? Проблема должна быть в этом. И служба Windows здесь не играет роли, проверьте это с помощью wcftestclient, а также попробуйте просмотреть wsdl (если он включен) в веб-браузере.

Но в основном я считаю, что вы не открыли хост:

ServiceHost host = new ServiceHost(....);
host.Open(); // check is it successfully called
...