2016-09-08 13 views
0

コンテキスト:私たちは、AWSロードバランサの背後にあるASP.NETサイトを実行し、60秒後にリクエストを出します。私たちのサイトへの最初のリクエストは、キャッシュがウォームアップしている間、これよりも時間がかかるかもしれません。この戦略には明らかな改善がありますが、それはこの質問のポイントの横にあります。IISとASP.NET:クライアントが切断すると、要求ワーカープロセスはどうなりますか?

私たちのIISインスタンスへの接続が60秒後に閉じられると仮定すると、実行中のコードに関して、その要求の実行はどうなりますか?それは

  • は、最終的に応答を送信するために誰もありませんにもかかわらず

    を継続していますか?

  • プロセスを強制終了する可能性があります。
  • サーバの設定されたタイムアウト値に対して実行されますか?
  • スマートなことをするには?

答えて

1

これは実際にコードによって異なります。

ループ/作業に時間がかかりすぎて終了するまで待つと、データを送信して接続に送信し、接続が切断されたことがわかると例外があります。つまり、データがクライアントに送信されて接続が失われていないかどうかを確認すると、処理はまだ終了しています。

魔法使いの場合、デッドループは閉じられ、ハングアップします。これはプール構成によって異なります。ここで最大実行時間を設定し、応答しないプロセスを終了させるまで待ち時間を設定することができます。

機能HttpResponse.IsClientConnectedは、クライアントがまだ接続されているかどうかをチェックし、長時間の処理を確認して中断したい場合に使用できます。

関連する問題