1

通常の Asp.Net 4.0 Web フォーム Web サイトがあります。私がする時:

Response.Redirect("SomePage.aspx");

次のコード行が実行されることを期待しています。しかし、驚くべきことに、コードの次の行は決して実行されません。いつ、なぜそれが起こるのか誰にもわかりますか?

4

3 に答える 3

5

元の URL で示されるページに表示される HTML テキストや Response.Write テキストなどの応答本文のコンテンツは無視されます。さらに、Redirect メソッドが処理されると、現在のページでのコードの実行が終了するため、ページ内の後続のコードも無視されます。

ソース: http://msdn.microsoft.com/en-us/library/ms524309(v=vs.90).aspx

于 2012-05-09T04:28:49.320 に答える
4

Response.Redirect2つのパラメータも受け入れます。ブール値である2番目のパラメーターは、現在のページの実行を終了するかどうかを示します。

したがって、呼び出しは後続のコード行を実行し、ログファイルにフラッディングされるのResponse.Redirect("Page.aspx",false)を防ぎます。ThreadAbortException

更新:デフォルトの動作が実行されない理由に答えるため

を使用する場合Response.Redirect、302ヘッダーのみをクライアントに送信することが期待されます。したがって、デフォルトでは、応答をフラッシュして現在のスレッドを中止するため、後続のアクションは実行されません。

たとえば、承認/認証モジュールでは、ユーザーがリソースにアクセスする資格がないことがわかったら、リダイレクトを実行するだけで、セキュリティ上の理由から、残りのイベントライフサイクルは実行されません。

于 2012-05-09T04:33:03.900 に答える
-1

response.redirectは、関数内のreturnステートメントと同じです。そのため、リターン後に書き込んだ行は実行されません。response.redirect()についても同じことが言えます。現在のページの実行はresponse.redirect()の後に終了します

于 2012-05-09T04:32:38.117 に答える