MSDN の例に厳密に従って、Windows サービスでホストされる非常に単純な WCF サービスを作成しました: http://msdn.microsoft.com/en-us/library/ff649818.aspx
最初の呼び出しから 10 分以上経過してから 2 回目の呼び出しを行うと、非アクティブ タイムアウト エラーが発生します。これが WCF クライアントのデフォルト設定であることを理解しています。
ただし、app.configをから変更すると
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
に
<reliableSession ordered="true" inactivityTimeout="infinite"
enabled="true" />
電話をかけようとすると、次のエラーが表示されます。
アクション 'http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence' を含むメッセージは、EndpointDispatcher での ContractFilter の不一致により、受信側で処理できません。これは、コントラクトの不一致 (送信者と受信者の間のアクションの不一致) または送信者と受信者の間のバインディング/セキュリティの不一致が原因である可能性があります。送信者と受信者が同じコントラクトと同じバインド (メッセージ、トランスポート、なしなどのセキュリティ要件を含む) を持っていることを確認します。
これは、私の WCF 構成ファイルが Windows サービスでどのように見えるかです。
<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>
私の質問は、inactivityTimeout を inifinte に設定し、発生しているエラーを回避するにはどうすればよいですか?