10

global.asax の Application_Error メソッドにカスタム エラー ハンドラーがあり、エラーが発生すると、次のコードを使用してユーザーをエラー ページに転送します。

Server.Transfer("/Error/");

ただし、実際のページ名を指定しないと、上記のコードは「/Error/ の子リクエストの実行中にエラーが発生しました」という例外で中断します。

なので使っServer.Transfer("/Error/Default.aspx")てみれば問題なく使えます。

これもResponse.Redirect("/Error/")問題なく動作しますが、Server.Transfer を引き続き使用して、エラー ページが表示されたときにアドレス バーに表示される URL を保持し、ユーザーがページを更新して元の問題のある URL へのアクセスを再試行できるようにします。

実際のaspxページ名を指定せずにServer.Transferメソッドを機能させる方法について誰かがコメントできるとありがたいです.

どうもありがとう。

4

1 に答える 1

15

Server.Transfer必要な出力を提供するリソースへの実際の仮想パスが必要です。Web サイトの既定のドキュメントが何であるかを知るために IIS を経由しないため、実際のファイル名でない限り、"/Error/" が何を意味するのかわかりません。

Response.Redirectこれは、その相対 URL (/Error/) を使用して「移動された」結果をブラウザーに送信し、ブラウザーが /Error/ に対して新しい要求を行うと、IIS が最初にそれを処理し、既定のドキュメント設定を適用するためです。

于 2010-12-29T11:18:26.560 に答える