c# - Server.Transfer 在 Application_Error 中不起作用

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

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

我们在生产环境中使用 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

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

响应.重定向

Issues 302 since it does client side redirect and then 404. I want to skip 302

Server.TransferRequest

This operation requires IIS integration pipeline mode

Global.asax Error handling: Quirks of server.transfer

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

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

最佳答案

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

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

关于c# - Server.Transfer 在 Application_Error 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22401758/

相关文章:

c# - excel 细胞着色

C# - 跳过最后 X 行的 Linq 语句

c# - IIS7 文件映射 - .asax、.ashx、.asap

c# - URL 格式 asp.net c#

iis - 如何从 Internet 访问我的网站 (IIS)?

c# - 自动生成设计师收藏品的代码隐藏名称

c# - C#套接字编程错误

asp.net - 如何为 Katana/Owin 自托管应用程序设置默认静态网页?

c# - 阻止用户在服务器 .NET 上显示 XML 文件

c# - 在服务器应用程序中使用 threadPool 或 new thread() 进行多线程