Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
WCF:Close()真的关闭了连接吗?_Wcf_Wcf Binding_Wcf Client - Fatal编程技术网

WCF:Close()真的关闭了连接吗?

WCF:Close()真的关闭了连接吗?,wcf,wcf-binding,wcf-client,Wcf,Wcf Binding,Wcf Client,我们的WCF服务存在一些问题,我正在进行一些测试: 我刚刚用默认设置创建了新的WCF客户端和服务,并监视它在TCP级别上的工作方式。我使用.NET4.0和net.tcp绑定 我看到的是:使用语句后关闭WCF并没有真正关闭到服务器的连接。。。 在TCP级别上,它应该向服务器发送[FIN]包,但它什么也不做,只是等待并在2分钟内服务器终止与[RST]包的连接。我附上了一些wireshark的截图 我相信这就是wcf的工作原理,但我无法找到一些信息来证实这一点。 我还注意到,在关闭using语句之后,

我们的WCF服务存在一些问题,我正在进行一些测试: 我刚刚用默认设置创建了新的WCF客户端和服务,并监视它在TCP级别上的工作方式。我使用.NET4.0和net.tcp绑定

我看到的是:使用语句后关闭WCF并没有真正关闭到服务器的连接。。。 在TCP级别上,它应该向服务器发送[FIN]包,但它什么也不做,只是等待并在2分钟内服务器终止与[RST]包的连接。我附上了一些wireshark的截图

我相信这就是wcf的工作原理,但我无法找到一些信息来证实这一点。 我还注意到,在关闭using语句之后,我打开了新的using语句,它使用相同的端口在客户端进行通信。。。(客户端上的端口共享为false)

我的问题是:

  • WCF在使用语句后不关闭到服务器的连接的原因是 关门了
  • 我能做些什么使其正确地关闭连接(发送[FIN]声明)
谢谢。 p、 我没有附加任何配置,因为它是VS2010为我创建的默认值


这里是猜测,但netTcpBinding确实实现了。WCF将“挂起”TCP连接,直到某些内部参数/逻辑决定可以释放它。这就是Dispose方法可以“按设计”抛出异常的原因之一


{My 2​:不管WCF设计者如何合理化自己的决定,在现实世界中,这是一件非常危险的事情。}

看起来减少idleTimeout可以减少重置包的数量,并且将maxOutboundConnectionsPerEndpopint设置为0始终正确关闭连接