従業員ページに がありResponse.Redirect
ます。給与ページにリダイレクトされます。
Response.Redirect ("Salary.aspx");
以下のように例外処理を追加するまでは正常に機能していました。
try
{
Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
throw new Exception();
}
//Remaining code in event handler
endResponse
これにより、「スレッドが中止されました」という新しい例外が発生しました。これは、リダイレクトを false に設定することで回避できることがわかりました。
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
新しい例外の説明: 常に例外をスローしますが、フレームワークによって処理されます。try..catch を追加したので、そこでキャッチされました (そして、新しい例外をスローしています)
注: CompleteRequest
HTTP フィルターとモジュールをさらにバイパスしますが、現在のページ ライフサイクルのイベントをさらにバイパスしません。
注: Response.Redirect は、この例外をスローして、現在のページの処理を終了します。ASP .Net 自体がこの例外をResetAbort
処理し、処理を続行するように呼び出します。
質問
- 例外がスローされないため、「endResponse を false に設定する」ことでパフォーマンスが向上するかどうか。
- ページのライフサイクル イベントが終了しないため、「endResponse を false に設定」するとパフォーマンスが低下する可能性がありますか?
落とし穴
- endResponse を
false
に設定すると、イベント ハンドラ内の残りのコードが実行されます。したがって、残りのコードをチェックする必要がありif
ます (チェック: リダイレクト基準が満たされていないかどうか)。
参照