我正在重定向到错误 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/