自定义错误MVC 5

时间:2016-05-10 23:06:08

标签: c# asp.net-mvc error-handling http-status-code-404 http-status-code-500

有人可以解释一下如何在我的项目中添加自定义404和500错误吗?我尝试将其添加到Web.config:

<customErrors mode="On">
    <error code="404" path="404.html" />
    <error code="500" path="500.html" />
</customErrors>

2 个答案:

答案 0 :(得分:0)

如果来自控制器的操作方法抛出异常,则会调用OnException方法。与HandleErrorAttribute不同,它还会捕获404和其他HTTP错误代码,并且它不需要打开customErrors。

它是通过覆盖控制器中的OnException方法实现的:

{{1}}

使用filterContext.ExceptionHandled属性,您可以检查是否在较早阶段处理了异常(例如HandleErrorAttribute):

if(filterContext.ExceptionHandled)     返回; 互联网上的许多解决方案都建议创建一个基本控制器类,并在一个地方实现OnException方法以获得全局错误处理程序。

但是,这并不理想,因为OnException方法几乎与其范围内的HandleErrorAttribute一样受限。你最终会在至少另一个地方重复你的工作。

答案 1 :(得分:0)

这是我最近阅读的最好的文章,让您知道您即将进入的快乐http://benfoster.io/blog/aspnet-mvc-custom-error-pages 我的customErrors元素看起来像这样。

struct Dog { int count[2]; };

Dog dogs[N];