Web.config自定义错误不适用于404

时间:2011-04-08 00:40:31

标签: web-config http-status-code-404 custom-error-pages

<customErrors mode="On" defaultRedirect="~/Error.aspx">
    <error statusCode="500" redirect="~/500/"/>
    <error statusCode="404" redirect="~/404/"/>
</customErrors>

这适用于以下请求:

~/egerg.aspx
~/wf92734eg.aspx

但是对于任何其他扩展,这给了服务器404页面!如何将服务器404页面重定向到我的错误页面?

1 个答案:

答案 0 :(得分:1)

此解决方案适用于我的网站,在.NET Framework 4上有99%的webforms和1%的Razor / MVC 4。

  1. 在/Web.config中:

    <system.web>
      <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx">
        <error statusCode="500" redirect="~/500/"/>
        <error statusCode="404" redirect="~/404/"/>
      </customErrors>
    </system.web>
    
  2. 在404处理程序的Page_Load事件中(/404/default.aspx.cs,我假设):

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.StatusCode = 404;
        Response.TrySkipIisCustomErrors = true;
    }
    
  3. 重复500处理程序的最后一步。

  4. /_lobal.asax.cs中的Application_Error方法为空。

  5. 此解决方案与this one非常相似。