31

HttpModuleスローされた例外を処理する C# 2.0 があります。例外がスローされるたびに、何らかのクエリ文字列を含むエラー ページ (aspx) が呼び出されます。を通じて行われますServer.Transfer()

ただし、コントロールが を実行しようとするServer.Transfer()と、次の例外がスローされます。

[ページ名].aspx の子要求の実行中にエラーが発生しました。

一方Request.Redirect()、正常に動作します。

EnableViewStateMac="false"リクエストが転送されるページの Page ディレクティブに設定してみました。それでも問題は解決しません。

これが私が試したコードです:

string errorPage = "errorpage.aspx?id=" + someErrorId
HttpContext.Current.Server.Transfer(errorPage,true);

これを解決する方法はありますか?

4

8 に答える 8

19

Server.Transfer()に代わるものを見つけました

使用しました

 HttpContext.Current.RewritePath("somefile.aspx");

これで問題は解決しました。

于 2010-03-02T09:48:17.947 に答える
14

OnPreRequestHandlerExecuteイベントでリクエスト パイプラインにフックしていたところ、Server.Transfer を使用できないことがわかりました。これは、子リクエストの実行に関する同じエラーがスローされたためです。

HttpContext.Current.RewritePath を使用しても、無視されているように見え、どこにもリダイレクトされなかったため、機能しませんでした。

IIS 7 以降を使用している場合は、代わりにServer.TransferRequestを使用できます。

2 つの方法の違いは、この回答で説明されています: TransferRequest と ASP.Net での転送

于 2015-02-17T16:21:40.040 に答える
8

私の修正は異なっていました:

オンライン クエリにより、 Server.Transferの代わりにResponse.Redirectを使用することで解決できると記載されている Microsoft Knowledge Base の記事が作成されました。

コマンドを変更したところ、不可解な「子リクエストの実行中にエラーが発生しました」というメッセージではなく、より正確な「404 エラー メッセージ」が表示されました。

そのため、リダイレクト文字列を調べたところ、パスがオフになっていることに気付きました。

Transfer String を "ErrorPage.aspx" から "../ErrorPage.aspx" に修正し (パスの変更に注意)、Server.Transferは問題なく動作しました。

于 2014-02-21T17:00:17.513 に答える
4

デバッグ中に VS.NET IDE でこの例外が発生した場合は、少なくとも 1 回は F5 キーを押してデバッグを続行してください。私の場合、実際のページは実際に問題を引き起こしている ASP.NET 例外でレンダリングされまし。私の場合、実際に「子リクエストの実行中にエラーが発生しました」という例外を引き起こしている不適切な形式のasp:ChangePasswordコントロールがありました。

于 2012-10-18T14:54:27.440 に答える
-1

これはバグではなく、仕様によるものです。http://support.microsoft.com/kb/320439を参照してください

于 2010-03-02T10:01:43.910 に答える