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