ASP.Net中特定页面的自定义错误处理

时间:2009-04-20 17:52:02

标签: asp.net error-handling web-config

在我运行的网站上,我将404和500错误映射为重定向到最终用户的自定义错误页面;在我的web.config中使用以下代码:

 ...
 ...

 <system.web>
  <customErrors defaultRedirect="/404/default.aspx" mode="RemoteOnly">

     <error statusCode="404" redirect="/404/default.aspx" />

  </customErrors>

  ...
  ...

但是,我有一个我不想重定向的特定页面;运行状况检查页面以确保站点100%正常运行。我尝试使用web.config中的以下代码设置特定于位置的自定义错误处理程序:

 ...
 ...

   </system.web>
  <location path="health.aspx">
    <system.web>
      <customErrors defaultRedirect="" mode="RemoteOnly"></customErrors>
    </system.web>
  </location>
 ...
 ...

然而,它似乎不起作用。当我将health.aspx重命名为badhealth.aspx等其他内容时,请发出请求,我希望通过黄屏死机页面获得通用的404错误。同样,通过故意更改代码以引发错误,我应该通过YSOD页面获得500错误。在这两种情况下,我最终被重定向到我们的自定义404页面,然后获得YSOD。想法?

非常感谢任何帮助。

谢谢大家, - 弗兰克

1 个答案:

答案 0 :(得分:5)

没关系,我们解决了这个问题。看来你有一个特定于位置的customError指令;如果将defaultRedirect保留为“”,则默认为站点范围的defaultRedirect URL。

解决方案只是关闭此特定路径的CustomError处理,如下所示:

<system.web>
    <customErrors defaultRedirect="/404/default.aspx" mode="RemoteOnly">
        <error statusCode="404" redirect="/404/default.aspx" />
    </customErrors>
</system.web>
<location path="health.aspx">
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</location>

非常感谢,何塞。