繁体   English   中英

使用自定义页面处理IIS6,IIS7,ASP.NET MVC3中的500个错误的权威指南

[英]Definitive Guide to Handling 500 Errors in IIS6, IIS7, ASP.NET MVC3 with Custom Page

我正在尝试将500错误处理页面添加到我的ASP.NET MVC3项目中。

我希望无论本地访问还是远程访问都显示我的自定义错误页面。 我的网站在IIS6,IIS7和IIS7.5 Express上运行

我希望在以下情况下显示它:

  • 在Application_BeginRequest中引发异常
  • 在Application_Error中引发异常
  • 网站项目中的静态构造函数中引发了异常
  • 在控制器中引发异常
  • 视图中抛出异常
  • 几乎在任何地方都会引发异常。

我无法做到这一点,实际上我根本无法显示任何自定义错误页面。

我的错误页面位于~/Views/Shared/Error.aspx

我在Global.asax.cs中的Application_Error方法仅记录引发的异常。

我的web.config具有:

<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.aspx" redirectMode="ResponseRewrite">
</customErrors>
...
<system.webServer>
  <httpErrors errorMode="Custom" />
  ...
</system.webServer>

我想念什么? 我需要怎么做才能处理这些情况?

对于IIS 7+,你唯一缺少的用来定义httpErrors与自定义处理程序来处理的部分:

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom">
         <remove statusCode="500" />
         <error statusCode="500" path="~/Views/Shared/Error.aspx" />
       </httpErrors>
   </system.webServer>
</configuration>

<remove />标记是可选的,具体取决于您的web.config层次结构。)

对于IIS 6及以下版本,您必须通过IIS管理器进行设置,方法是转到相应的“属性”页面的“自定义错误”选项卡,然后将相应的HTTPError行编辑为“消息类型:”“ URL”和“ URL:”“〜/查看/共享/ Error.aspx”。

最好的方法是找出为什么BeginRequest首先会引发异常。 这不应该发生。 在Application_Error中,一种替代方法是使用GetBaseException,然后仅将异常信息重定向到您的自定义错误页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM