【问题标题】:Using a global (dumb) error page for all ASP.NET MVC errors?对所有 ASP.NET MVC 错误使用全局(哑)错误页面?
【发布时间】:2009-06-24 14:47:06
【问题描述】:

我已设置并配置 ELMAH 以记录我正在处理的 ASP.NET MVC 项目中的所有错误。它将被一小群不需要了解太多的用户使用,所以每当出现任何类型的错误(404、InvalidOperation、Y2K...任何事情!)我只想向他们展示一个通用的默认错误视图,其中包含致电我们的帮助台并坐下来的说明。

ELMAH 已启动并运行良好,我们的帮助台工作人员将使用它来诊断错误并在必要时记录/提升票证。我的问题是让我的全局错误页面显示。我正在使用here 发布的解决方案来确保 ELMAH 和 [HandleError] 可以很好地配合使用。

Web.config 是这样设置的:

<customErrors mode="On" />

如果我访问有 LINQ 错误(序列不包含任何元素)的 http://application/Home/Index,那么我会从 /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 完美记录了这两个错误。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      <system.webServer>
      

      配置文件中的部分

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-16
        • 2022-01-07
        • 1970-01-01
        • 2013-05-04
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多