WCF: Услугата на Windows не може да намери крайна точка, когато се хоства в приложението Winforms

Имам нужда от услуга на 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 и изглежда, че работи добре с този тип обвързване.


person M. Williamson    schedule 26.07.2010    source източник
comment
Клиентът и сървърът са на една и съща машина, нали?? NetNamedPipe работи само на същата машина....   -  person marc_s    schedule 26.07.2010
comment
Да, те са на една и съща машина.   -  person M. Williamson    schedule 26.07.2010


Отговори (1)


Сигурни ли сте, че имате app.config на мястото му и сте отворили хоста на услугата? Въпросът трябва да е в това. И услугата Windows няма никаква роля тук, проверете я с wcftestclient и също опитайте да видите wsdl (ако е разрешен) в уеб браузъра.

Но най-вече вярвам, че не сте отворили хоста:

ServiceHost host = new ServiceHost(....);
host.Open(); // check is it successfully called
person Incognito    schedule 26.07.2010
comment
Услугата определено се хоства. Опитах както конзолни, така и winforms приложения, за да тествам хоста на услугата (точно същия код). Имам и тестово приложение, използващо същия клиентски прокси, който работи добре, изглежда само Windows Service -› Winforms, който се проваля. Windows Service -› Конзолно приложение (OK) Windows Service -› WinForms приложение (Неуспешно) WinForm App -› WinForm приложение (OK) И трите конфигурации използват един и същ клиентски прокси код и един и същ хостинг код на услуга. В момента няма app.config, обвързванията са само в код за сега. - person M. Williamson; 26.07.2010
comment
@М. Уилямсън Както също беше казано, моля, актуализирайте въпроса и поставете код там. - person Incognito; 26.07.2010