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?

Ich benötigen noch die NetTcpBinding.
OK - aber dann eben nicht aktivieren reliableSession wenn Sie es nicht brauchen...

InformationsquelleAutor Null Reference | 2012-08-14

Schreibe einen Kommentar