WCF-timeout wegen Inaktivität
Habe ich einen sehr einfachen WCF-Dienst, gehostet auf windows-Dienst, der in enger Anlehnung an das Beispiel auf der MSDN-Website hier: http://msdn.microsoft.com/en-us/library/ff649818.aspx
Wenn ich einen 2. Anruf zu meinem service > 10 Minuten nach dem ersten Anruf, ich werde ein Inaktivitäts-timeout-Fehler. Ich verstehe, dass dies ist die default-Einstellung der WCF-client.
Jedoch, wenn ich mein app.config von
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
zu
<reliableSession ordered="true" inactivityTimeout="infinite"
enabled="true" />
Ich bekomme diese Fehlermeldung, wenn ich versuche einen Anruf zu tätigen:
Die Meldung mit der Aktion
'http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence' kann nicht sein
verarbeitet der receiver, aufgrund einer ContractFilter mismatch am
EndpointDispatcher. Dies kann entweder aufgrund eines Vertrages mismatch
(nicht übereinstimmende Handlungen zwischen sender und Empfänger) oder eine Bindung/Sicherheit
Missverhältnis zwischen dem sender und dem Empfänger. Überprüfen Sie, dass sender und
Empfänger den gleichen Vertrag und die gleiche Bindung (einschließlich
Anforderungen an die Sicherheit, z.B. die Nachricht, Transport, None).
Dies ist, wie mein WCF config-Datei Aussehen wie auf den windows-Dienst.
<system.serviceModel>
<services>
<service name="Asis.IBSS.Milestone.WCFService.ServiceImplementation.VideoService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="" contract="Asis.IBSS.Milestone.WCFService.ServiceContract.IVideoService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8555/MilestoneService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
Meine Frage wäre, wie kann ich die inactivityTimeout zu inifinte, und umgehen Sie die Fehler, ich bin immer?
OK - aber dann eben nicht aktivieren
reliableSession
wenn Sie es nicht brauchen...InformationsquelleAutor Null Reference | 2012-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass müssen Sie auch die receiveTimeout auf die Bindung an die unendliche. Diese zwei Eigenschaften, receiveTimeout und inactivityTimeout haben einige Abhängigkeiten voneinander, wenn Sie den inactivityTimeout auf einen höheren Wert als die receiveTimeout Sie möglicherweise einige Fehler.
Beispiel:
und setzen bindingConfiguration="someServiceFederatedBinding" in Ihrem Dienst.
InformationsquelleAutor lex87