asp.net-mvc – ErrorAttribute vs OnException与Application_Error

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ErrorAttribute vs OnException与Application_Error前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想处理应用程序范围的错误,并在asp.net mvc中显示一个ErrorView页面.
有3种方法(或我知道).
1) ErrorAttribute in BaseController:Controller class.
     Can be used on individual Action/Controller/BaseController.
2) Override OnException() in the BaseController:Controller class.
     Will work on Controllers derived from BaseController
3) Application_Error in Global_aspx.

最好的做法是什么
这些方法中的哪一种应用于应用范围广泛的错误处理,或者我们应该使用多个或仅一个.

如果我们在BaseController上处理ErrorAttribute Or / And OnException()的错误,那么我们仍然在Application_Error()中处理它.

我们什么时候应用Application_Error()?

解决方法

> HandleErrorAttribute是通过该属性应用的MVC过滤器.如果发生异常,您可以提供视图名称,并且还可以指定此过滤器应用于的基本(或特定)异常类型.如果没有提供视图名称,它将会查找名为“Error”的视图.您已经注意到,您可以将其应用于各种范围.它允许您根据异常指定不同的“错误页面”视图.
> Controller.OnException是一种方法,如果您的任何操作最终导致错误,该方法将被调用.
>上述两者都是MVC概念和MVC管道的一部分,它位于ASP.NET流水线之上,如果使用上述处理异常,它将不会传播到Application_Error,而是像http错误404,500,如果我记得正确的话.

有什么用?

肯定地看看ELMAH的应用范围的错误记录和我的blog post关于ELMAH和ASP.NET MVC

关于显示错误页面,只要使用[HandleError]和HandleErrorAttribute即可,因为它已经处理了所有内容(可选过滤和每个异常类型的可选自定义错误页面).

猜你在找的asp.Net相关文章