Quiero controlar el error de toda la aplicación y mostrar una página ErrorView en asp.net mvc. Hay 3 formas de hacerlo (o lo sé).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.
¿Cuál es la mejor práctica. ¿Cuál de estos métodos se debe usar para el manejo de errores en toda la aplicación o deberíamos usar múltiples o solo uno?
Si manejamos el error en ErrorAttribute O/OnException() en BaseController aún debemos manejarlo en Application_Error().
¿Cuándo deberíamos usar Application_Error()?
Si tengo HandleErrorAttribute capturando la clase Exception, ¿eso no previene todas las "excepciones no controladas?" Si es así, ¿eso no le impide a Elmah trabajar? –
Sí, lo hace, pero puede tener un filtro que se ejecute antes de todo lo que registra la excepción a través de Elmah, pero no lo controla ni lo suprime: http://stackoverflow.com/questions/766610/how-to-get-elmah- to-work-with-asp-net-mvc-handleerror-attribute/5936867 # 5936867 –
Ese último párrafo tiene que estar equivocado, o estoy malinterpretando algo. Para mostrar páginas de error, ¿cómo está bien simplemente usar el 'HandleErrorAttribute'? ELMAH no hace nada para manejar el error, simplemente lo registra y con el 'HandleErrorAttribute' no se manejará ningún error que no sea 500 o que ocurra fuera del controlador. Entonces también necesitarías usar 'Application_Error'. –