我在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
中。
哪种方法更好?这两种方法都有明显的缺点吗?
答案 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/