2011-01-04 10 views
6

行を実行:
のResponse.Redirect例外

Response.Redirect("Whateva.aspx", true);

結果で:

 
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll 
An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code 

例外は、理由は "真" の部分であり、すぐに現在の要求を終了することを伝えます。

これはどのようにする必要がありますか?私たちが考える場合

  • 例外は、一般的に重いと考えられ、その要求を終了するための何倍理由は、早期ページの残りの部分の処理を回避することですされています。
  • パフォーマンス監視で例外が表示されるため、ソリューションを監視すると例外が偽りに表示されます。

これを達成する別の方法はありますか?

+0

類似の質問:http://stackoverflow.com/questions/2777105/ –

答えて

6

実行時ランタイムは特定の例外に関する情報を収集するために時間とメモリを消費するため、開発者は例外を発生させないようにする必要があります。代わりに、彼(または彼女)は単にそれが起こることを許すべきではありません(可能な場合)。

Response.Redirectについて:この動作は「設計通り」ですが、よく知られている回避策を使用することをお勧めします。 this KB articleをお読みください。

- パベル

+0

参照されたKB記事が空になりました。 –

+0

@ EvoDリンクが正しく動作していて、正しいKBの記事を参照していることがわかりません。 – volpav

+0

Hrmmm、私の間違い。それは今私のために現れる。ごめんなさい。 –

6

Iは、一般的にこのシナリオで取る一つのアプローチは、反応中に反応を終了しないように、しかしreturn(または他の流量制御)とすぐに従うことです。このようなもの:

Response.Redirect("Whateva.aspx", false); 
return; 

これはリダイレクトがロジックフローでどこで行われているかによって異なります。しかし、あなたはそれを処理したいです。しかし、リダイレクトの応答をとにかく終了したい場合は、returnで問題のメソッドを終了することは問題ではありません。

私は人がこの問題をかなり頻繁に受け止めているのを見てきました。これは避けなければならないが、完全性のために私はとにかくそれを言うつもりです

try 
{ 
    Response.Redirect("Whateva.aspx", true); 
} 
catch (Exception ex) 
{ 
    // do nothing 
} 

これは、もちろん、はいくつかの理由で、行われるべきではありません。質問は後でグーグル、など)を介して、キャッチした例外を飲み込むことです。あなたの例外の説明から推測したように、あなたは間違いなくこれが悪い習慣であることを間違いなく知っています。しかし、私が言ったように、それは答えでこの事実に気づく価値があります。

0

、この問題を回避する次のいずれかの方法を使用するには:

Response.Endのについて、Application_EndRequestにコードの実行をバイパスする代わりResponse.EndのをHttpContext.Current.ApplicationInstance.CompleteRequestメソッドを呼び出しますイベント。

レスポンス。リダイレクト、endResponseパラメータにfalseを渡してResponse.Endへの内部呼び出しを抑制するResponse.Redirect(String url、bool endResponse)オーバーロードを使用します。

例: Response.Redirect( "nextpage.aspx"、false);

この回避策を使用する場合、Response.Redirectに続くコードが実行されます。

Server.Transferの場合は、代わりにServer.Executeメソッドを使用します。

から: http://support.microsoft.com/kb/312629/en-us

Volpavによって掲示同じリンク。

よろしくお願いいたします。

関連する問題