我正在尝试将一个500错误处理页面添加到我的ASP.NET MVC3项目中。
无论是本地访问还是远程访问,我都希望显示自定义错误页面。 我的网站运行在IIS6,IIS7和IIS7.5 Express
我想在以下时间显示:
我无法做到这一点,事实上我根本无法显示任何自定义错误页面。
我的错误页面位于~/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>
我错过了什么?我需要做些什么来处理这些情况?
答案 0 :(得分:1)
对于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”。
答案 1 :(得分:0)
最好的方法是找出你的BeginRequest首先抛出异常的原因。这不应该发生。在Application_Error中,一种替代方法是使用GetBaseException,然后只使用异常信息重定向到自定义错误页面。