【问题标题】:Server.Transfer not working in Application_ErrorServer.Transfer 在 Application_Error 中不起作用
【发布时间】:2014-04-19 13:16:14
【问题描述】:

我正在重定向到错误 404 页面并希望发出 404 作为 google 引擎的响应代码。

我们在生产环境中使用 IIS 6 :(

代码在Application_Error() 中的 Global.ascx.cs 中执行 404 处理

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;
 }

Server.Transfer

会话状态只能在 enableSessionState 设置为 true 时使用, 在配置文件或 Page 指令中。还请 确保 System.Web.SessionStateModule 或自定义会话状态 模块包含在<configuration>\<system.web>\<httpModules> 应用程序配置中的部分。

Response.Redirect

问题 302,因为它执行客户端重定向,然后是 404。我想 跳过 302

Server.TransferRequest

此操作需要 IIS 集成管道模式

Global.asax Error handling: Quirks of server.transfer

如何在 IIS 6 中处理这个问题?

为什么我遇到Server.Transfer 的会话问题?背后是否有正当理由,或者它是 ASP.Net 框架中的错误?

【问题讨论】:

    标签: c# asp.net iis http-status-code-404 server.transfer


    【解决方案1】:

    如果您仍然需要正确的 404 重定向,您可以使用以下代码:

    Response.AddHeader("Location", "~/404.aspx");
    Response.Status = "404 Not found";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多