看起来 WCF TCP 连接不是持久的。第一次 ping 回复需要一段时间,但后续过程花费的时间更少。过了一会儿,又需要很长时间 - 再次重新连接?
服务器> 在 net.tcp://0.0.0.0:999 上启动
CLIENT> Connection created to net.tcp://localhost:999 //不是真正的连接,准备连接
CLIENT> 1s163ms 内 Ping 回复 //第一次连接
CLIENT> 22ms 内 Ping 回复 //已连接
客户端 > 26 毫秒内 Ping 回复
客户端 > 24 毫秒内 Ping 回复
CLIENT> 325ms 内 Ping 回复 //重新连接
客户端> 19 毫秒内 Ping 回复
CLIENT> 767ms 内 Ping 回复 //重新连接
如果是这样,tcp 连接在断开之前的空闲时间值是多少?我需要保持连接。
Update修改后的代码:
NetTcpBinding tcpBind = new NetTcpBinding();
tcpBind.ReliableSession.Enabled = true;
tcpBind.ReliableSession.Ordered = true;
tcpBind.ReliableSession.InactivityTimeout = TimeSpan.FromMinutes(10);
ServiceHost svh = new ServiceHost(typeof(ServiceImplementation));
svh.AddServiceEndpoint(
typeof(WCFSimple.Contract.IService),
//new NetTcpBinding(),
tcpBind,
String.Format("net.tcp://{0}:{1}", ip, port));
svh.Open();
现在我又遇到了另一个错误:
那个行动http://tempuri.org/IService/Pong http://tempuri.org/IService/Pong此端点不支持。此端点仅处理 2005 年 2 月的 WS-ReliableMessaging 消息。
Update我只修改了服务器端,导致了错误。然后我将客户端的 TCP 修改为可靠消息传递。
我不认为 Ping 是测试 TCP 连接的好工具。因为Ping使用ICMP作为其底层协议而不是TCP。
我建议您创建一个 WCF 客户端,连接到服务,然后通过一些网络嗅探工具检查 TCP 连接,或者简单地使用 netstat 进行快速检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)