对所有ASP.NET MVC错误使用全局(哑)错误页面?

时间:2009-06-24 14:47:06

标签: asp.net asp.net-mvc error-handling elmah

我已经设置并配置了ELMAH来记录我正在处理的ASP.NET MVC项目中的所有错误。一旦有任何类型的错误(404,InvalidOperation,Y2K ......任何东西!),它将由一小群不需要太多知道的用户使用。我只是想向他们展示一个通用的默认错误视图,其中包含调用我们的服务台并坐下来的说明。

ELMAH正常运行,我们的服务台工作人员将根据需要用于诊断错误并记录/提升故障单。我的问题在于显示我的全局错误页面。我正在使用发布here的解决方案来确保ELMAH和[HandleError]一起玩得很好。

Web.config设置如下:

<customErrors mode="On" />

如果我访问具有LINQ错误的http://application/Home/Index(Sequence不包含任何元素),那么我会从/Shared/Error.aspx中看到我很好的通用错误视图但是如果我尝试访问http://application/Fake/Broken这是一个404然后我得到了通常的ASP.NET

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

Requested URL: /Fake/Broken

虽然ELMAH完全记录了这两个错误。

2 个答案:

答案 0 :(得分:2)

如果您只是想显示一般错误页面,那么您可以指定页面本身:

<customErrors mode="On" defaultRedirect="error.htm" />

这会导致所有未处理的异常,页面未找到等等,以显示您的“error.htm”。您可以更具体地了解错误代码:

<customErrors mode="On">
  <error statusCode="404" redirect="notfound.htm"/>
</customErrors>

答案 1 :(得分:0)

如果您使用的是iis 7,则可能需要将其添加到

<system.webServer>
配置文件中的

部分

<httpErrors errorMode="Custom" existingResponse="PassThrough" />