ASP.NET リダイレクトでの System.Threading.ThreadAbortException の処理
ASP.NET で Response.Redirect()
を使用すると、System.Threading.ThreadAbortException
がスローされる場合があります。これは、サーバーがリダイレクト後に現在のページの実行を終了するために発生します。 endResponse
で true
を Response.Redirect()
に設定すると、例外は回避されますが、リダイレクト後に不要な処理が発生するため、非効率的です。
最良のアプローチ
理想的な解決策は、Response.Redirect()
を endResponse
に設定して false
を使用し、その後に Context.ApplicationInstance.CompleteRequest()
を使用することです。これにより、例外なくきれいにリダイレクトされます:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
これにより、IIS パイプラインはすぐに EndRequest
ステージに進み、現在のページがそれ以上処理されなくなります。
続きを読む
Application_Error
ハンドラー内でのリダイレクトの処理を含む、より詳細な説明については、Thomas Marquardt の洞察力に富んだブログ投稿を参照してください (利用可能な場合は、ブログ投稿へのリンクがここに挿入されます)。 このアプローチにより、ASP.NET アプリケーションで効率的かつ例外のないリダイレクトが保証されます。
以上がResponse.Redirect 中の System.Threading.ThreadAbortException を回避する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。