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

时间:2011-09-22 08:23:07

标签: asp.net-mvc-3 exception-handling

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

例如(Error Handling in global.asax):

public class SomeWebApplication : System.Web.HttpApplication {

  // ... other methods ...

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

另一种方法是通过在[HandleError]方法中注册的RegisterGlobalFilters操作过滤器属性,再次在Global.asax.cs中。

哪种方法更好?这两种方法都有明显的缺点吗?

1 个答案:

答案 0 :(得分:8)

[HandleError]是要走的路,因为它保持一切简单,责任明确。此action filter是特定的ASP.NET MVC功能,因此是处理错误的官方方式。覆盖过滤器以添加自定义功能也非常容易。

Application_Error是旧方法,并不属于MVC。

只要您记得用它标记控制器(或基本控制器),[HandleError]属性就可以正常工作。

更新

创建了博客条目:http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net-mvc/