[英]WCF: Windows service cannot find endpoint when hosted in Winforms application
我需要Windows服務才能對WinForms應用程序中托管的服務進行WCF調用。
不幸的是,當嘗試呼叫時,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應用程序托管的Endpoint對服務可見,反之則不然。
更新:
我嘗試將綁定從NetNamedPipeBinding更改為NetTcpBinding,並且這種綁定似乎可以正常工作。
您確定已將app.config放置在適當的位置,並且已打開服務主機嗎? 問題必須在於此。 Windows服務在這里沒有作用,請使用wcftestclient進行檢查,並嘗試在Web瀏覽器中查看wsdl(如果已啟用)。
但主要是我相信您尚未打開主機:
ServiceHost host = new ServiceHost(....);
host.Open(); // check is it successfully called
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.