Binding.ReceiveTimeout プロパティ


アプリケーション メッセージが受信されない間に、接続が非アクティブになってから切断されるまでの時間を取得または設定します。Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.

 property TimeSpan ReceiveTimeout { TimeSpan get(); void set(TimeSpan value); };
public TimeSpan ReceiveTimeout { get; set; }
member this.ReceiveTimeout : TimeSpan with get, set
Public Property ReceiveTimeout As TimeSpan


アプリケーションがタイムアウト前にメッセージを受信する必要がある期間を指定する TimeSpan。既定値は10分です。The TimeSpan that specifies how long the application has to receive a message before timing out. The default value is 10 minutes.


値が 0 未満か、または大きすぎます。The value is less than zero or too large.


信頼できるセッションを使用しているとき、接続を維持するために適用する必要がある非アクティブ タイマーが 2 つあります。When using a reliable session, there are two different inactivity timers that must be satisfied to keep the connection alive. これらの非アクティブ タイマーのいずれかがオフになると、接続が切断されます。If either of these inactivity timers goes off, then the connection is dropped.

  • 非アクティブ タイマーの 1 つは、信頼できるセッションに対して適用され、InactivityTimeout と呼ばれます。The first inactivity timer is on the reliable session and is called the InactivityTimeout. タイムアウト時間内にアプリケーション メッセージまたはインフラストラクチャ メッセージが受信されない場合、この非アクティブ タイマーが発生します。This inactivity timer fires if no messages, either application or infrastructure, are received within the timeout period. インフラストラクチャ メッセージは、アプリケーション データを含んでいるのではなく、接続維持や受信確認など、チャネル スタック内でプロトコルの 1 つのために生成されるメッセージです。An infrastructure message is a message that is generated for the purpose of one of the protocols in the channel stack, such as a keep alive or an acknowledgment, rather than containing application data.

  • もう 1 つの非アクティブ タイマーはサービスに対して適用され、バインドの ReceiveTimeout 設定を使用します。The second inactivity timer is on the service and uses the ReceiveTimeout setting of the binding. タイムアウト時間内にアプリケーション メッセージが受信されない場合、この非アクティブ タイマーが発生します。This inactivity timer fires if no application messages are received within the timeout period. この値は、たとえばクライアントが少なくとも 1 つのメッセージをサーバーに送信してから、サーバーがセッションで使用するチャネルを閉じるまでの最大時間を指定します。This specifies, for example, the maximum time a client may take to send at least one message to the server before the server will close the channel used by a session. この動作により、クライアントが長時間にわたってサーバーのリソースを保持することが回避されます。This behavior ensures that clients cannot hold on to server resources for arbitrary long periods.

いずれかの非アクティブ タイマーが発生した場合は接続が切断されるので、InactivityTimeoutReceiveTimeout を超えてからその値を大きくしても、影響はありません。Since the connection is dropped if either inactivity timer fires, increasing InactivityTimeout once it is greater than ReceiveTimeout has no effect. これらのタイムアウトの既定は両方とも 10 分です。したがって、信頼できるセッションを使用しているときに設定を変えるには、これらの両方の値を大きくする必要があります。The default for both of these timeouts is 10 minutes, so you always have to increase both of them to make a difference when using a reliable session.

バインドまたはチャネルでトランザクション フローが有効になっている場合は、指定したタイムアウト時間より操作の実行が長くかかる可能性があります。If transaction flow is enabled on the binding or the channel, the operation may take longer to execute than the specified timeout. このような場合は、タイムアウトの時間が経過し、そのためにトランザクションが中止されるため、操作は失敗します。In these circumstances the operation fails due to the expired timeout and the transaction aborts appropriately.

セッションでセキュリティを使用する場合は、バインドで設定された ReceiveTimeout 値もセッションタイムアウトとして使用されます。When security is used with sessions, the ReceiveTimeout value set on the binding is also used as the session timeout.