WindowsサービスでホストされているWCFサービスと、サービスにアクセスする単一の非スレッドクライアントがあります。このサービスは、SQLServer2008データベースへのデータアクセスを実行しています。クライアント側で断続的に次の例外が発生します。
System.TimeoutException: The request channel timed out while waiting for a reply after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.
このエラーはWCFの問題のすべてを捕らえるのに少し役立つ可能性があることを認識していますが、操作に1分以上かかるため、エラーは発生していないと確信しています(タイムアウトを3倍にしましたが、まだ発生しています)。
この問題は複数のエンドポイントで発生し、クライアントプロキシへの呼び出しで発生します。クラッシュが発生したときにサービスが到達するさまざまなポイントをテキストファイルに記録し、サービスからのreturnステートメントに到達することを確認しました。
クライアントとサービスは2年以上何らかの形で使用されており、この問題はごく最近発生したようであり、サービスにとって重要な領域に明らかな変更はありません(ただし、これらのステートメントは両方とも、問題をデバッグするときに頼るのは危険です) )。
調査するためのアドバイス、考え、提案をいただければ幸いです。
サービスバインディングは次のとおりです。
<binding name="WSHttpBinding_IDataService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
クライアントバインディングは次のとおりです。
<binding name="WSHttpBinding_IAssessmentDataAccessContract"
closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="">
<extendedProtectionPolicy policyEnforcement="Never"/>
</transport>
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true"/>
</security>
</binding>