タイムアウトWCFサービス
-
04-07-2019 - |
質問
WCFでタイムアウトはどのように機能しますか?たとえば、クライアントバインディングに対して sendTimeout および receiveTimeout を構成できることを知っています。しかし、それらはどのように機能しますか?
MSDNは sendTimeout を次のように説明します:
特定の時間間隔を指定するTimeSpan値 操作を送信して完了します。この値は、以上である必要があります ゼロに。デフォルトは00:01:00です。
送信操作/受信操作とは何ですか?
解決
クライアント側:
- SendTimeoutは、OperationTimeoutを初期化するために使用されます。OperationTimeoutは、メッセージを送信するための対話全体を制御します(要求/応答の場合の応答メッセージの受信を含む)。このタイムアウトは、CallbackContractメソッドから応答メッセージを送信するときにも適用されます。
- OpenTimeoutとCloseTimeoutは、チャネルを開いたり閉じたりするとき(明示的なタイムアウト値が渡されないとき)に使用されます。
- ReceiveTimeoutは使用されません。
サーバー側:
- クライアントと同じ送信、オープン、クローズのタイムアウト(コールバックの場合)。
- ReceiveTimeoutは、セッションアイドルタイムアウトを初期化するためにServiceFrameworkレイヤーによって使用されます。
ソースは MSDNフォーラムのブライアンマクナマラ。
他のヒント
「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分です。呼び出されるtcpトランスポートのTtimeout ChannelInitializationTimeout、およびそのデフォルト値は5秒です。
ASPNET。サービスホストが閉じるように、シャットダウンタイムアウトがあります。 タイムアウト、デフォルトは90秒。 ExecutionTimeout、私たちのように 操作タイムアウト。デフォルトは110秒です。
その投稿にあったものに加えて、クライアントエンドで定義された操作タイムアウトもあります。こちらをご覧ください: