ExceptionContext.ExceptionHandled cambia a verdadero. ¿Dónde se maneja la excepción?
Estoy usando un filtro de acción global para manejar y registrar todas las excepciones.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ElmahHandleErrorAttribute());
filters.Add(new HandleErrorAttribute());
}
Así es como el filtro de acción global.ElmahHandleErrorAttribute
se define - anula laOnException
método.
public class ElmahHandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
//Is the exception handled already? context.ExceptionHandled seems to be true here
if (!context.IsChildAction && (context.HttpContext.IsCustomErrorEnabled))
{
//Do other stuff stuff
//Log to Elmah
}
}
...
}
No entiendo porque el valor decontext.ExceptionHandled
es cierto cuando elOnException
método se ejecuta. ¿Cómo se maneja esta excepción?
-EDITAR- tengo uncustomErrors
sección en elWeb.Config
. Yo tengo unErrorController
clase, y acciones llamadasGeneral
yHttp404
.
<customErrors mode ="On" defaultRedirect="Error/General">
<error statusCode="404" redirect="Error/Http404"/>
</customErrors>
Lo que no entiendo es, la acción del controlador.General
no se ejecuta (nunca se alcanza el punto de interrupción), pero el valor deExceptionContext.ExceptionHandled
se establece en true cuando elOnException
método deElmahHandleErrorAttribute
comienza a ejecutarse.