我有超时问题,这些都是细节:WCF不正确计时?
我绑定配置是这样的:
<netTcpBinding>
<binding name="WindowsServerOverTcp"
maxReceivedMessageSize="10000000"
maxBufferSize="10000000"
maxBufferPoolSize="10000000"
closeTimeout="00:00:03"
openTimeout="00:00:03"
sendTimeout="00:00:03"
receiveTimeout="00:00:03">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None">
</security>
</binding>
</netTcpBinding>
我发送消息给我知道被关闭,以便连接应的服务器按照我的app.config中规定的3秒后超时,但由于某种原因需要20-30秒。
当EndPointNotFoundException被抛出这样的信息,我得到:
System.ServiceModel.EndPointNotFoundException: 无法连接到 的net.tcp://10.0.0.82:4466/MegaMatcherWcf。 连接尝试持续时间为00:00:03,时间间隔为 。 TCP错误代码 10060:连接尝试失败 因为连接的方做了一段时间 后不 正确响应,或建立的连接失败 ,因为连接的主机没有 响应10.0.0.82:4466
如果我在打开机器的情况下尝试进行相同的测试,但没有运行监听软件,我会得到预期的行为,并在3秒后连接超时。为什么如果机器关机,需要30秒钟,然后告诉我需要3秒钟?
只是为了澄清,我让每个连接都是一个新的连接,我没有抱着到现有的连接。我会考虑考虑这是一种微软技术,他们将覆盖默认的TCP超时时间这种情况下?如果只有打开机器才能使用connectTimeout属性,那么它有什么意义? – Adrian 2011-05-11 15:22:31
@Adrian - 这是令人沮丧的,但我相信这是这种情况的原因是因为WCF让操作系统建立基础连接(获取服务器的路径)。这是让操作系统做到最好。不幸的是,这意味着当服务器关闭时,我们依赖于操作系统超时。 – IAmTimCorey 2011-05-11 15:28:41
@ BiggsTRC感谢您的信息,真的让我感到困惑,我会记得下一次!我将不得不将所有连接都连接到SmartThread池,以便这些超时不会减慢我的应用程序。 – Adrian 2011-05-11 15:52:08