System.Threading.ThreadAbortException と Response.Redirect: 実践ガイド
Response.Redirect()
を使用して Web ページをリダイレクトすると、System.Threading.ThreadAbortException
がトリガーされる場合があります。これは、サーバーがリダイレクトの開始後に現在のページの残りのコードの処理を停止するために発生します。
endResponse
で false
を Response.Redirect(url, false)
に設定すると、この例外は防止されますが、サーバーが元のページの処理を続けるため、不必要なリソースの消費につながる可能性があります。
推奨されるアプローチ
最も効率的なソリューションは、Response.Redirect(url, false)
と Context.ApplicationInstance.CompleteRequest()
を組み合わせたものです。これにより、元のページでコードを実行することなく、クリーンなリダイレクトが保証されます:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
このメソッドは、EndRequest
フェーズに移行するよう IIS に明確に通知し、元のページの処理を効果的に終了します。
Application_Error
ハンドラー内でリダイレクトを処理するためのベスト プラクティスなど、このトピックの詳細については、Thomas Marquardt の詳細なブログ投稿を参照してください (リンクがある場合は提供されます)。
以上がResponse.Redirect と ThreadAbortException: 適切に回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。