ホームページ > バックエンド開発 > C++ > ASP.NET で Response.Redirect 中に ThreadAbortException を回避する方法は?

ASP.NET で Response.Redirect 中に ThreadAbortException を回避する方法は?

Susan Sarandon
リリース: 2025-01-20 21:29:13
オリジナル
519 人が閲覧しました

How to Avoid ThreadAbortException During Response.Redirect in ASP.NET?

ASP.NET リダイレクトでの ThreadAbortException への対処

問題:

ASP.NET でページのリダイレクトに Response.Redirect(...) を使用すると、恐ろしい「System.Threading.ThreadAbortException」エラーが発生する可能性があります。

例外を理解する:

この例外は、Response.Redirect がデフォルトでリダイレクト コマンドの後にコードの実行を継続するために発生します。 その後、Web サーバーはリクエストを途中で終了し、例外が発生します。

解決策: 制御されたリダイレクト

これを回避する最善の方法は、応答の終了を制御できる Response.Redirect オーバーロードを使用することです。

<code class="language-csharp">Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();</code>
ログイン後にコピー

endResponse パラメータを false に設定すると、リクエストが即時に終了することを防ぎます。 Context.ApplicationInstance.CompleteRequest() は、EndRequest フェーズに直接進むよう IIS に明示的に信号を送り、リダイレクト後の不要なコードの実行を回避してパフォーマンスを最適化します。

これが優れている理由:

Response.Redirect(url, true) を使用するだけで解決策のように思えるかもしれませんが、リダイレクトが有効になる前にページ上の残りのコードが (短時間ではありますが) 引き続き実行されるため、パフォーマンスの問題が発生する可能性があります。上記の方法は、よりクリーンで効率的なリダイレクトを提供します。

さらに読む:

Application_Error ハンドラー内のリダイレクトなどのエッジ ケースの処理について詳しくは、Thomas Marquardt のブログなどのリソースを参照してください (利用可能な場合はここにリンクが挿入されます)。

以上がASP.NET で Response.Redirect 中に ThreadAbortException を回避する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート