我想处理应用程序范围的错误并在asp.net mvc中显示ErrorView页面。有3种方法可以做到(或者我知道)。ErrorAttribute vs OnException vs Application_Error
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或/和OnException()上的错误,我们仍然应该在Application_Error()中处理它。
什么时候应该使用Application_Error()?
如果我有HandleErrorAttribute捕获Exception类,是不是阻止了所有“未处理的异常?”如果是这样,这不妨碍Elmah的工作? – 2012-05-15 23:24:51
是的,但是你可以有一个过滤器在所有通过Elmah记录异常之前运行,但不处理它或禁止它 - http://stackoverflow.com/questions/766610/how-to-get-elmah-用asp-net-mvc-handleerror-attribute/5936867#5936867 – 2012-05-16 11:11:21
最后一段必须是错误的,或者我误解了某些东西。为了显示错误页面,只需使用'HandleErrorAttribute'就可以了? ELMAH没有为处理错误做任何事情,它只是记录它,并且使用'HandleErrorAttribute',任何不是500或者在控制器之外发生的错误都不会被处理。所以你也需要使用'Application_Error'。 – 2014-02-23 22:47:22