簡體   English   中英

WCF:Windows服務托管在Winforms應用程序中時找不到端點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM