【问题标题】:Catching Errors and Error Pages捕获错误和错误页面
【发布时间】:2011-06-18 03:59:48
【问题描述】:

我想在我的应用程序中添加一个友好的错误页面,其中会显示类似“糟糕,出了点问题”这样的文字。我希望即使出现异常,也可以为我的应用程序的每个页面自动显示错误页面。我怎样才能做到这一点?

【问题讨论】:

    标签: c# .net asp.net-mvc exception-handling custom-error-pages


    【解决方案1】:

    只需在 web.config 中启用自定义错误:

    <customErrors mode="On">
    
    </customErrors>
    

    并且~/Views/Shared/Error.aspx 视图将在未处理的错误时呈现(假设您的控制器使用[HandleError] 属性装饰)。

    然后你可以对不同的异常有更细粒度的控制和不同的视图:

    [HandleError(
        View = "~/Views/Errors/Custom.aspx", 
        ExceptionType = typeof(SomeCustomException))]
    

    【讨论】:

    • 谢谢达林。我是 MVC 2 的新手,所以我应该将 放在 web.config 的哪个位置?它会在 下吗?我还要创建 Error.aspx 文件还是系统会生成它?谢谢。
    • @Derek,是的,&lt;customErrors&gt; 进入&lt;system.web&gt;Error.aspx 通常由 ~/Views/Shared 文件夹中的默认模板创建,但如果它不存在,您可以创建它。
    • 达林,我照你说的做了。我把 [HandleError] 放在课堂上。为了测试代码,我在我的一个函数中抛出了一个异常。当我运行代码时,它不会显示错误页面 (~/Views/Shared/Error.aspx)。难道我做错了什么?我是新的 MVC,所以我很抱歉。再次感谢。
    • 达里,标准的黄色错误页面,并说用户没有捕捉到异常。
    • @Derek,确保您在 web.config 中设置了&lt;system.web&gt;&lt;customErrors mode="On" /&gt;&lt;/system.web&gt;,并且抛出异常的控制器使用了[HandleError] 属性。通常这就是自定义~/Views/Shared/Error.aspx 页面显示所需的全部内容。还要确保您在黄屏中看到的错误与渲染Error.aspx 视图无关。例如,如果此视图使用母版页,并且在此母版页内您尝试访问一些不可用的信息,您可能会遇到异常。
    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2011-08-19
    相关资源
    最近更新 更多