0

ウェブサイトのすべてのエラーをキャプチャし、特定の情報に基づいて電子メールを生成します。でこれを行いGlobal.asaxますApplication_Error。エラーをキャプチャするためにいくつかのコードを実装404しました。その時点で次のことを行います。

Server.ClearError();
string Redir = Settings["Custom404Page"];
Server.Transfer(Redir);

Redir は次のようになります:PageContent/123/404_Not_Found.htmlしかし、これを渡すServer.Transferとエラーが発生します:

Error executing child request for PageContent/123/404_Not_Found.html

Response.Redirectのステータスコード404が維持されていることを確認する必要があるため、使用したくありませんResponse.Redirect

誰にもこれに対する解決策がありますか?このような使い方をしServer.Transferてもいいですか?

4

1 に答える 1

1

Server.Transfer静的ページを指すことはできません。.aspx機能させるには、ページを指す必要があります。

本当に HTML ページを使用したい場合は、HTML ファイルを開いてそのコンテンツを読み取り、キャッシュしてResponse.Write、404 応答ヘッダーを保持しながら出力する必要があります。

参照: http://support.microsoft.com/kb/320439

Microsoft インターネット インフォメーション サービス (IIS) は、要求元のファイルの拡張子に基づいて、Server.Transfer または Server.Execute 要求を適切な Internet Server Application Programming Interface (ISAPI) 拡張子にディスパッチします。たとえば、.aspx ページの要求は、Aspnet_isapi.dll ISAPI 拡張機能にディスパッチされます。

要求が適切な ISAPI 拡張機能にディスパッチされると、ISAPI 拡張機能は別の ISAPI 拡張機能を呼び出すことができなくなります。ASP.NET ページへの要求を処理する Aspnet_isapi.dll ファイルが、ASP ページへの要求を処理する Asp.dll ファイルに要求を転送できないため、「現象」に記載されているエラー メッセージが表示されます。

于 2013-07-25T14:23:13.620 に答える