ExceptionContext.ExceptionHandled é alterado para true. Onde a exceção está sendo tratada?
Estou usando um filtro de ação global para manipular e registrar todas as exceções.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ElmahHandleErrorAttribute());
filters.Add(new HandleErrorAttribute());
}
É assim que o filtro de ação globalElmahHandleErrorAttribute
é definido - substitui oOnException
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
}
}
...
}
Eu não entendo porque o valor decontext.ExceptionHandled
é verdade quando oOnException
método é executado. Como esta exceção é tratada?
-EDITAR- eu tenho umcustomErrors
seção noWeb.Config
. eu tenho umErrorController
classe e ações chamadasGeneral
eHttp404
.
<customErrors mode ="On" defaultRedirect="Error/General">
<error statusCode="404" redirect="Error/Http404"/>
</customErrors>
O que eu não entendo é que a ação do controladorGeneral
não é executado (o ponto de interrupção nunca é atingido), mas o valor deExceptionContext.ExceptionHandled
está definido como verdadeiro quando oOnException
método deElmahHandleErrorAttribute
começa a executar.