非アクティブタイムアウトを増やす必要があるのは正しいです。ただし、信頼できるセッションを使用している場合は、receiveTimeoutも考慮されます。このMSDN記事から:
信頼できるセッションを使用する場合、接続を維持するために満たす必要のある2つの異なる非アクティブタイマーがあります。これらの非アクティブタイマーのいずれかがオフになると、接続が切断されます。
最初の非アクティブタイマーは信頼できるセッション上にあり、InactivityTimeoutと呼ばれます。この非アクティブタイマーは、タイムアウト期間内にアプリケーションまたはインフラストラクチャのいずれのメッセージも受信されなかった場合に起動します。インフラストラクチャメッセージは、アプリケーションデータを含むのではなく、チャネルスタック内のプロトコルの1つ(キープアライブや確認応答など)の目的で生成されるメッセージです。
2番目の非アクティブタイマーはサービス上にあり、バインディングのReceiveTimeout設定を使用します。この非アクティブタイマーは、タイムアウト期間内にアプリケーションメッセージが受信されない場合に起動します。これは、たとえば、サーバーがセッションで使用されるチャネルを閉じる前に、クライアントがサーバーに少なくとも1つのメッセージを送信するのにかかる最大時間を指定します。この動作により、クライアントはサーバーリソースを任意の期間保持できなくなります。
いずれかの非アクティブタイマーが起動すると接続が切断されるため、ReceiveTimeoutより大きくなるとInactivityTimeoutを増やしても効果はありません。これらのタイムアウトの両方のデフォルトは10分であるため、信頼できるセッションを使用する場合は、違いを生むために常に両方を増やす必要があります。
これらの値の両方を「無限」に設定する場合(構成ファイルを使用している場合)、またはTimeSpan.MaxValue
コードでバインディングを設定している場合は、探しているものを実現する必要があります。
編集
1receiveTimeout値とinactivityTimeout値を「infinite」に設定すると、コンパイラーで警告が生成されます。これは大丈夫です。IDEは、そのキーワードを考慮しないXSLを使用します。舞台裏では、WCFはTimeSpanOrInfiniteConverterを使用してキーワードをTimeSpan.MaxValueに変換しています。 ソース