Ich erstelle eine Chat-Anwendung mit WCF (mit Callback-Vertrag) und netTcpBinding. Ich hosste den Dienst als Windows-Dienst und den Zugriff von anderen Computern über die Client-Anwendung.WCF Callback Service mit netTcp Binding Timeout nach 10 Minuten
Das Problem, dass ich jetzt konfrontiert ist, ist die Clients Verbindung kommt zu einem Fehlerzustand nach 10 Minuten, die eine Art von Zeitüberschreitung auftreten scheint. Ich habe bereits versucht, das empfangene Timeout zu erhöhen und Timeout sowohl im Service als auch im Client zu senden, hat aber nicht funktioniert.
Welche Einstellung sollte ich ändern, um diese Zeitüberschreitung zu erhöhen und in welcher Anwendung, Service oder Client?
Im Folgenden sind meine Konfigurationsdateien,
Dienst
<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>
Kunde
<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>
Dank.
haben Sie receiveTimeout auf -1 versucht Einstellung. http://msdn.microsoft.com/en-us/library/ms824661.aspx. genannt Unendlichkeit –
versuchen Sie dies auch http://nogeekhere.blogspot.com/2009/04/why-will-wcf-client-be-disconnected.html –
Danke Shoaib, versuchte ich mit unendlich, aber nicht als gültig akzeptiert Wert in der Konfigurationsdatei. ein Grund dafür? Wie auch immer, ich habe eine kleine Problemumgehung gemacht, so dass der Dienst jeden Client alle 5 Minuten aktualisiert. Aber ich denke, es sollte einen Weg geben, dies durch Konfigurationen zu handhaben. – user501579