[解決済み】Response.RedirectでSystem.Threading.ThreadAbortExceptionが発生するのはなぜか?
質問
Response.Redirect(...)を使ってフォームを新しいページにリダイレクトすると、エラーが発生します。
mscorlib.dll で 'System.Threading.ThreadAbortException' 型の最初の例外が発生しました。
mscorlib.dll で 'System.Threading.ThreadAbortException' 型の例外が発生したが、ユーザーコードでは処理されなかった。
私の理解では、このエラーは、response.redirect が呼び出されたページの残りをウェブサーバーが中止したために発生したものだと思います。
に第2パラメータを追加できることは知っています。
Response.Redirect
は、endResponse と呼ばれるものです。 endResponseをTrueに設定してもエラーは出ますが、Falseに設定すると出ません。 しかし、これはウェブサーバーが私がリダイレクトしたページの残りを実行していることを意味すると確信しています。 これは、控えめに言っても、非効率的だと思われます。 何か良い方法はないでしょうか? 何か
Response.Redirect
または、古いページの読み込みを強制的に停止する方法はありますか?
ThreadAbortException
?
解決方法は?
正しいパターンは、Redirect オーバーロードを endResponse=false で呼び出し、制御を戻したら EndRequest ステージに直接進むように IIS パイプラインに指示する呼び出しを行うことです。
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
このブログの記事 Thomas Marquardt が、 Application_Error ハンドラ内でリダイレクトを行う特殊なケースの処理方法など、さらなる詳細を説明しています。
関連
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] IndexOutOfRangeException / ArgumentOutOfRangeExceptionとは何ですか、またどのように修正すればよいですか?
-
[解決済み] クライアントから危険な可能性のあるRequest.Formの値が検出された
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】Response.End()は有害とみなされるか?