ASP.NET MVC中全局错误/异常处理的最佳实践是什么?

4

我看过在ASP.NET MVC 3应用程序中实现全局错误处理的两种方法。其中一种方法是通过Global.asax.cs中的Application_Error 方法。

例如(Error Handling in global.asax):

public class SomeWebApplication : System.Web.HttpApplication {

  // ... other methods ...

  protected void Application_Error() {
    // ... application error handling code ...
  }
}

另一种方法是通过在Global.asax.cs中的RegisterGlobalFilters方法中注册的[HandleError]操作过滤器属性来实现。
哪种方法更好?这两种方法是否存在任何重大缺点?
1个回答

8
[HandleError] 是一种简单明了、责任清晰的方式,因此是处理错误的官方方法,是特定于ASP.NET MVC的一个操作过滤器。而且很容易覆盖该过滤器以添加自定义功能。 Application_Error 是旧的做法,不适用于MVC。
只要记得给控制器(或基本控制器)打上标记,[HandleError] 属性就可以正常工作。 更新: 创建了一个博客条目:http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net-mvc/

1
错误控制器和在web.config中使用默认的<customErrors>部分。 - jgauffin
1
@PsychoDad:在 web.config 中使用 customErrors 和错误控制器。 - jgauffin
自定义错误重定向不太好,如何仅更改视图并保留404状态代码? - dariol
@dan:web.config中的customErrors(defaultRedirect)可以处理MVC管道之外的非404异常。那么AJAX错误呢?根据请求类型返回选择性结果? - Observer
您的博客链接连接超时。 - Alternatex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接