NettcpBinding wcf - 如何提高检测故障的时间
NettcpBinding wcf - how to improve the time of detect faulted
我有一个连接到 wcf 服务器以获取时间异步的应用程序。
用于通过 tcp 保持连接。
所以我想取消与服务器的连接,所以我注册到事件错误。
到目前为止一切正常,但我发现断开连接的检测总是大于或等于 20 deconds,我想改进它,我想也许可以通过更改 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秒..
我可以如何改进?
我没有看到您为绑定设置了 receiveTimeout
。根据我的经验,这是最重要的之一。
也将其设置为 5 秒。
sendTimeout
是关于等待消息发送的时间。所以,除非你发送任何东西(调用一个方法),否则没有什么可监控的。
receiveTimeout
正好相反 - 等待多长时间才放弃。
我有一个连接到 wcf 服务器以获取时间异步的应用程序。
用于通过 tcp 保持连接。
所以我想取消与服务器的连接,所以我注册到事件错误。
到目前为止一切正常,但我发现断开连接的检测总是大于或等于 20 deconds,我想改进它,我想也许可以通过更改 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秒..
我可以如何改进?
我没有看到您为绑定设置了 receiveTimeout
。根据我的经验,这是最重要的之一。
也将其设置为 5 秒。
sendTimeout
是关于等待消息发送的时间。所以,除非你发送任何东西(调用一个方法),否则没有什么可监控的。
receiveTimeout
正好相反 - 等待多长时间才放弃。