我们遇到了一些WCF服务问题,我正在做一些测试: 我刚刚使用默认设置创建了新的WCF客户端和服务,并监控它在TCP级别上的工作方式。我使用.net 4.0和 net.tcp 绑定
而我所看到的:在使用语句后关闭WCF并没有真正关闭与服务器的连接...... 在TCP级别上,它应该将[FIN]包发送到服务器,但它不会做任何事情,只需等待并在2分钟内服务器终止连接和[RST]包。我附上了wireshark的一些截图
我相信这是wcf的工作原理,但我无法找到一些信息来确认它。 另外我注意到,如果在关闭using语句后,我打开新的using语句,它使用相同的端口在客户端进行通信...(在客户端端口共享是错误的)
我的问题:
感谢。 附:我没有附加任何配置,因为它是VS2010为我创建的默认值。
答案 0 :(得分:1)
在这里猜测,但netTcpBinding确实实现了a connection cache。 WCF将“挂起”到TCP连接,直到某些内部参数/逻辑决定它可以被释放。这就是Dispose方法可以“按设计”抛出异常的原因之一。
{我的2¢:无论WCF设计师如何通过这个决定对自己进行合理化,在现实世界中,这样做是非常危险的。}