繁体   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