3

エラー 404 ページにリダイレクトしており、Google エンジンの応答コードとして 404 を発行したいと考えています。

実稼働環境で IIS 6を使用しています:(

コードは Global.ascx.cs で 404 処理を行いますApplication_Error()

if ((ex is HttpException && 404 == ((HttpException)ex).GetHttpCode()))
 {
    //Server.Transfer("~/404.aspx"); // Error with session state 
    Server.TransferRequest("~/404.aspx"); //This operation requires IIS 7 
    //Response.Redirect("~/404.aspx"); It will issue 302 then 404
     return;
 }

サーバー.転送

セッション状態は、構成ファイルまたは Page ディレクティブで enableSessionState が true に設定されている場合にのみ使用できます。また、System.Web.SessionStateModule またはカスタム セッション状態モジュールが<configuration>\<system.web>\<httpModules> アプリケーション構成のセクションに含まれていることを確認してください。

Response.Redirect

クライアント側のリダイレクトを行ってから 404 を実行するため、302 を発行します。302 をスキップしたい

Server.TransferRequest

この操作には IIS 統合パイプライン モードが必要です

Global.asax エラー処理: server.transfer の癖

IIS 6 でこの問題に対処するにはどうすればよいですか?

でセッションの問題が発生するのはなぜServer.Transferですか? 背後に正当な理由がありますか、それとも ASP.Net Framework のバグですか?

4

1 に答える 1

-2

それでも正しい 404 リダイレクトが必要な場合は、次のコードを使用できます。

Response.AddHeader("Location", "~/404.aspx");
Response.Status = "404 Not found";
于 2014-03-31T11:08:27.300 に答える