我创建了两个WCF端点,服务端点驻留在桌面应用程序( IP地址为10.8.20.175)上;客户端端点驻留在web托管的应用程序上。
这是服务终结点配置
<services>
<service behaviorConfiguration="NotificationServiceBehavior"
name="NotificationService">
<endpoint address="" binding="netTcpBinding" contract="INotificationService" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:3337/NotificationService" />
</baseAddresses>
</host>
</service>
</services>这是客户端端点配置
<system.serviceModel>
<client>
<endpoint address="net.tcp://10.8.20.175:3337/NotificationService"
binding="netTcpBinding" contract="INotificationService"
name="NetTcpBinding_INotificationService" />
</client>
<bindings>
<netTcpBinding>
<binding sendTimeout="00:10:00" maxReceivedMessageSize="1000000" name="NetTcpBinding_INotificationService"/>
</netTcpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
请注意,在端点地址中,我输入了服务端点的实际IP地址。当我在localhost上测试服务端点和客户端端点之间的通信时,该地址是localhost:3337,并且通信正常。现在,当我部署端点时,我得到了以下错误:
套接字连接已中止。这可能是由于处理消息时出错、远程主机超过了接收超时时间或基础网络资源问题造成的。本地套接字超时时间为'00:10:00‘。
System.Net.Sockets.SocketException:现有连接被远程主机在System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[]缓冲区的System.Net.Sockets.Socket.Receive(Byte[] buffer,Int32 offset,Int32 size,SocketFlags socketFlags),Int32 offset,Int32 size,TimeSpan timeout,Boolean closing)强制关闭
日志显示连接被远程主机强制关闭,这意味着客户端端点实际上发送了请求,并且它到达了服务端点吗?在这一点上我很困惑。我不确定客户端端点是否可以到达服务端点。
顺便说一句,我可以从客户端端点机器ping服务端点的机器,也可以通过端口3337远程登录到远程机器。
发布于 2013-04-13 12:28:00
根据我的经验,这表明您的服务已被客户端访问并激活。然而,在调用过程中发生了一些事情,导致来自服务的应答终止。
检查的最好方法是为您的服务打开WCF tracing。这将帮助您更好地了解服务器端正在发生的事情。
https://stackoverflow.com/questions/15983906
复制相似问题