Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF:Windows服务在Winforms应用程序中托管时找不到终结点_C#_.net_Wcf_Windows Services - Fatal编程技术网

C# WCF:Windows服务在Winforms应用程序中托管时找不到终结点

C# WCF:Windows服务在Winforms应用程序中托管时找不到终结点,c#,.net,wcf,windows-services,C#,.net,Wcf,Windows Services,我需要Windows服务对WinForms应用程序中托管的服务进行WCF调用 不幸的是,在尝试调用时,Windows服务无法发现端点 我已尝试更改Windows服务的登录属性以允许与桌面交互,但这没有帮助 我在控制台应用程序中使用了与WinForms应用程序完全相同的托管代码,Windows服务发现端点没有问题 任何帮助都将不胜感激 在WinForms应用程序中托管服务的代码 _myServiceHost = new ServiceHost(typeof(MyService); _myServ

我需要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();
\u serviceFactory=新通道工厂
( 
新建NetNamedPipeBinding(),
“净。pipe://localhost/MyService" 
); 
... 
IMyService clientProxy=_serviceFactory.CreateChannel();
clientProxy.SomeMethod();
此问题似乎与windows服务运行时的安全上下文有关,该上下文阻止WinForms应用程序承载的端点对服务可见,但不会阻止vica对服务可见

更新:


我尝试将绑定从NetNamedPipeBinding更改为NetTcpBinding,但这种类型的绑定似乎可以正常工作。

您确定已将app.config放在适当的位置,并且已打开服务主机吗? 问题一定在这方面。并且windows服务在此处没有角色,请与wcftestclient一起检查,并尝试在web浏览器中查看wsdl(如果已启用)

但我主要相信你还没有打开主机:

ServiceHost host = new ServiceHost(....);
host.Open(); // check is it successfully called

这项服务肯定是托管的。我尝试了console和winforms应用程序来测试服务主机(完全相同的代码)。我还有一个测试应用程序,它使用相同的客户端代理,工作正常,似乎只有Windows服务->Winforms失败。Windows服务->控制台应用程序(确定)Windows服务->WinForms应用程序(失败)WinForm应用程序->WinForm应用程序(确定)所有三种配置都使用相同的客户端代理代码和相同的服务托管代码。目前没有app.config,绑定目前仅在代码中。@M.Williamson也说过,请更新问题并将代码放在那里。客户端和服务器在同一台机器上,对吗??NetNamedPipe只在同一台机器上工作……是的,它们在同一台机器上。