Tôi đang tạo một ứng dụng trò chuyện với WCF (sử dụng hợp đồng gọi lại) và netTcpBinding. Tôi đang lưu trữ dịch vụ dưới dạng dịch vụ cửa sổ và truy cập dịch vụ từ các máy tính khác qua ứng dụng khách.Dịch vụ gọi lại WCF với netTcp Hết thời gian chờ sau 10 phút
Sự cố mà tôi đang gặp phải là kết nối máy khách đến trạng thái Lỗi sau 10 phút dường như là một loại thời gian chờ xảy ra. Tôi đã thử tăng thời gian chờ đã nhận và gửi thời gian chờ trong cả dịch vụ và ứng dụng khách nhưng không hoạt động.
tôi nên thay đổi cài đặt nào để tăng khoảng thời gian chờ này và ứng dụng, dịch vụ hoặc ứng dụng nào?
Sau đây là file cấu hình của tôi,
Dịch vụ
<system.serviceModel>
<services>
<service behaviorConfiguration="PeerTalk.Service.ChatServiceBehavior"
name="PeerTalk.Service.ChatService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
contract="PeerTalk.Service.ServiceContracts.IChat">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:7920/ChatService" />
<add baseAddress="net.tcp://localhost:7921/ChatService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="PeerTalk.Service.ChatServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="tcpBinding"
maxBufferSize="67108864"
maxReceivedMessageSize="67108864"
maxBufferPoolSize="67108864"
transferMode="Buffered"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:00:10"
sendTimeout="00:00:10"
maxConnections="100">
<readerQuotas maxDepth="64"
maxStringContentLength="67108864"
maxArrayLength="67108864"
maxBytesPerRead="67108864"
maxNameTableCharCount="16384"/>
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows"/>
</security>
<reliableSession enabled="false" inactivityTimeout="00:01:00"/>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
Khách hàng
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IChat" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:00:10" transactionFlow="false"
transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="67108864"
maxBufferSize="67108864" maxConnections="10" maxReceivedMessageSize="67108864">
<readerQuotas maxDepth="32" maxStringContentLength="67108864"
maxArrayLength="67108864" maxBytesPerRead="67108864" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:01:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://10.10.10.45:7921/ChatService" binding="netTcpBinding"
bindingConfiguration="NetTcpBinding_IChat" contract="PeerTalkService.IChat"
name="NetTcpBinding_IChat">
</endpoint>
</client>
</system.serviceModel>
Cảm ơn.
bạn đã thử đặt getTimeout thành -1. http://msdn.microsoft.com/en-us/library/ms824661.aspx. được gọi là vô cùng –
thử điều này cũng như http://nogeekhere.blogspot.com/2009/04/why-will-wcf-client-be-disconnected.html –
Cảm ơn Shoaib, tôi đã thử sử dụng vô hạn nhưng không chấp nhận là hợp lệ giá trị trong tệp cấu hình. bất kỳ lý do cho điều đó? bất kỳ cách nào, tôi đã làm một workaround nhỏ để các dịch vụ sẽ làm mới mỗi khách hàng mỗi 5 phút. Nhưng tôi đoán có một cách để xử lý điều này thông qua các cấu hình. – user501579