NettcpBinding wcf - 如何改善检测故障的时间

时间:2016-02-07 16:50:18

标签: wcf nettcpbinding net-tcp

我有一个连接到wcf服务器的应用程序,用于获取时间异步。

通过tcp保持连接活着。

所以我想要断开我与服务器的连接,以便我注册到事件故障。

到目前为止一切都很好,但是我发现断开连接的检测结果超过或等于20秒,我想改进它,我想可能是通过nettcp的更改设置,如下所示:

 <netTcpBinding>
    <binding name="NetTcpBindingConf" closeTimeout="00:00:05" openTimeout="00:00:05" sendTimeout="00:00:10" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="20" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="5048576" maxArrayLength="50000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
      <reliableSession ordered="true" inactivityTimeout="00:04:00" enabled="true"/>
      <security mode="Transport">
        <transport clientCredentialType="None" protectionLevel="EncryptAndSign"/>
        <message clientCredentialType="Windows"/>
      </security>
    </binding>
  </netTcpBinding>

我改为:

 <netTcpBinding>
    <binding name="NetTcpBindingConf" closeTimeout="00:00:05" openTimeout="00:00:05" sendTimeout="00:00:05" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="20" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="5048576" maxArrayLength="50000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
      <reliableSession ordered="true" inactivityTimeout="00:00:05" enabled="true"/>
      <security mode="Transport">
        <transport clientCredentialType="None" protectionLevel="EncryptAndSign"/>
        <message clientCredentialType="Windows"/>
      </security>
    </binding>
  </netTcpBinding>

但似乎仍然超过或等于20秒..

如何改善?

1 个答案:

答案 0 :(得分:0)

我没有看到您为绑定设置receiveTimeout。根据我的经验,这是最重要的一个。 也将它设置为5秒。

sendTimeout是指等待消息发送的时间。所以,除非你发送任何东西(称为方法),否则没有什么可以监控的。 receiveTimeout是相反的 - 在放弃之前需要等待多长时间。