![](/img/trans.png)
[英]WCF trying to expose a nettcp endpoint; TCP error code 10061: No connection could be made because the target machine actively refused it
[英]WCF - No endpoint listening at http localhost + No connection could be made because the target machine actively refused it => external network
我在控制台中托管WCF服务时遇到问题。 试图在此处搜索,但即使与此处的其他问题相似,也无法找到此问题的解决方案。
托管非常简单。
C#-主机
WCFSrv = new WCFService();
WCFSrvHost = new ServiceHost(typeof(WCFService));
udaWCFSrvHost.Open();
配置:
<system.serviceModel>
<services>
<service name="WCF_Service.WCFService">
<endpoint address="" binding="basicHttpBinding" contract="WCF_Service.IWCFService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:23456/WCFService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicTimeouts" closeTimeout="00:00:30" openTimeout="00:00:30"
receiveTimeout="00:00:30" sendTimeout="00:00:30" />
</basicHttpBinding>
</bindings>
</system.serviceModel>
我可以从本地主机通过WcfTestClient到达服务并调用服务提供的方法。
我可以通过WcfTestClient从同一网络访问服务,但是无法调用服务提供的方法。 一旦尝试调用方法,我将收到错误消息:
There was no endpoint listening at http://localhost:23456/WCFService/ that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
...
Inner Exception:
No connection could be made because the target machine actively refused it 127.0.0.1:23456
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
我试图检查是否有端口23456打开,并且应用程序正在通过netstat -an在该端口上侦听,并且端口23456已打开并正在侦听。
当我尝试修改基址(而不是localhost:23456时,我在网络中放置了服务器的真实IP,例如10.xx.xx.xx)时,我也能够调用方法,但这只是内部解决方案的解决方法。
服务器和端口应向外部网络开放,并可以通过Internet访问。 我尝试从Internet获得服务,并且能够从Internet获得服务(证明端口已打开),但由于上述问题,面临相同的问题=>无法调用方法。
有没有人遇到过同样的问题,能为我提供帮助吗?
在评论中回答,出于完整性考虑。
正确检查服务器上的客户端配置点,而不是本地主机。
我是WCF的新手,但是最近我也遇到了同样的问题。 我刚刚在客户端项目中创建了一个配置文件,并在其中写入了端点的地址:
<system.serviceModel>
<services>
<service name="WCF_Service.WCFService">
<endpoint address="" binding="basicHttpBinding" contract="WCF_Service.IWCFService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:23456/WCFService/" />
</baseAddresses>
</host>
</service>
</services>
您可以使用以下参考: http : //dotnetmentors.com/how-to-host-wcf-service-in-iis-7.aspx
在我看来,观点非常有用。 如果不起作用,请尝试重新创建项目。
听起来您绑定到错误的IP地址,请尝试以下操作:
<host>
<baseAddresses>
<add baseAddress="http://0.0.0.0:23456/WCFService/" />
</baseAddresses>
</host>
使用0.0.0.0代替localhost会将您的服务绑定到该主机上的所有IP。
感谢大家的支持。
我的问题的解决方案:
不要使用WcfTestClient从外部网络测试服务,至少就我而言,我遇到了问题中所述的问题。
当您将服务托管在IIS之外时,为初学者提供简单的建议
M.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.