ASP.Net 4:具有正确HTTP状态代码的自定义错误页面,如何?

时间:2011-03-10 08:56:37

标签: asp.net c#-4.0 iis-7.5

我正在使用IIS 7.5在Windows 2008 R2上运行ASP.Net 4站点。

开发时我也使用Windows 7和VS 7.0与IIS 7.5。

我已经设置了我的web.config:

<customErrors mode="On" defaultRedirect="~/Error500.aspx" redirectMode="ResponseRewrite">
  <error statusCode="404" redirect="~/Error404.aspx"/>
</customErrors>

我的Error404.aspx页面在代码隐藏中有这个:

protected void Page_Load(object sender, EventArgs e)
{
    Response.StatusCode = 404;
}

在我的开发人员计算机上,这工作正常,我在浏览器中看到了我的错误,并且使用Fiddler我可以确认我只收到404 HTTP状态。

现在,当我将它发布到我的服务器时,这是一个不同的故事。在这里,我将看到IIS自己的404页面(“C:\ inetpub \ custerr \ en-US \ 404.htm”)

如果我删除代码隐藏中的Response.StatusCode,我会在服务器上获得错误,尽管有200 HTTP状态。

我忽视了什么,因为这不起作用?

1 个答案:

答案 0 :(得分:2)

this article by Rick Strahl有帮助吗?它包含500个错误和TrySkipIisCustomErrors属性,以覆盖默认的IIS行为。