web-dev-qa-db-ja.com

タイムアウトWCFサービス

WCFでタイムアウトはどのように機能しますか?たとえば、クライアントバインディングに対してsendTimeoutおよびreceiveTimeoutを構成できることを知っています。しかし、それらはどのように機能しますか?

MSDNはsendTimeoutを次のように説明しています。

送信操作が完了するまでの時間間隔を指定するTimeSpan値。この値はゼロ以上でなければなりません。デフォルトは00:01:00です。

送信操作/受信操作とは何ですか?

61
TruckerG

クライアント側:

  • SendTimeoutは、OperationTimeoutを初期化するために使用されます。OperationTimeoutは、メッセージを送信するための対話全体を制御します(要求/応答の場合の応答メッセージの受信を含む)。このタイムアウトは、CallbackContractメソッドから応答メッセージを送信するときにも適用されます。
  • OpenTimeoutとCloseTimeoutは、チャネルを開いたり閉じたりするとき(明示的なタイムアウト値が渡されないとき)に使用されます。
  • ReceiveTimeoutは使用されません。

サーバ側:

  • クライアントと同じ送信、オープン、およびクローズのタイムアウト(コールバックの場合)。
  • ReceiveTimeoutは、セッションアイドルタイムアウトを初期化するためにServiceFrameworkレイヤーによって使用されます。

ソースは MSDNフォーラムのBrian McNamara です。

61
Brian

「WCFのタイムアウトとそのデフォルト値」を参照してください http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values。 aspx

Binding-SendTimeout、ReceiveTimeout、OpenTimeout、CloseTimeoutのタイムアウト。これらは、設定またはバインディングのコードを使用して簡単に設定できます。それらのデフォルト値は1分です。

ServiceHostにはOpenTimeoutとCloseTimeoutがあります。 OpenTimeoutのデフォルトは1分で、CloseTimeoutのデフォルトは10秒です。

クライアント側チャネルのタイムアウト。 OperationTimeoutがあり、チャネルをIContextChannelにキャストすることで設定できます。これのデフォルトも1分です。 ChannelInitializationTimeoutと呼ばれるtcpトランスポートのTtimeout、およびそのデフォルト値は5秒です。

ASPNET。サービスのホストクローズタイムアウトと同様に、シャットダウンタイムアウトがあります。デフォルトは90秒です。 ExecutionTimeoutは、操作のタイムアウトと同様に、デフォルトは110秒です。

9

その投稿にあったものに加えて、クライアントエンドで定義された操作タイムアウトもあります。こちらをご覧ください:

http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

4
sq33G