Tratando erros com Elmah no ASP.NET MVC (parte 2 – HandleError)

Olá pessoal

Este post é continuação do anterior sobre o ELMAH (leia a parte 1 aqui).

Vamos ver como utilizar o ELMAH em conjunto com HandleErrorAttribute, que é utilizado para capturar exceções não tratadas e exibir uma página amigável de erro.

Com o uso do HandleError e o <customErrors> do web.config em modo “On”, as exceções disparadas pela app NÃO serão logadas pelo ELMAH, uma vez que o HandleError já terá capturado-as e mostrado a view de erro especificada no <customErrors>.

Uma solução bem simples para isso é usarmos um filter global para logarmos manualmente as exceções pelo ELMAH.

Crie uma classe em seu projeto (por exemplo, em uma pasta Helpers) com o seguinte código:

using Elmah;
public class ElmahHandleErrorFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        if (context.ExceptionHandled)
            ErrorSignal.FromCurrentContext().Raise(context.Exception);
    }
}

Em seguida, registre o filter no método RegisterGlobalFilters do global.asax:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new ElmahHandleErrorFilter());
    filters.Add(new HandleErrorAttribute());
}

Agora rode a aplicação (não se esqueça que o <customErrors> deve estar habilitado (mode=”On”) e  uma exceção de teste sendo disparada no HomeController) e você deverá ver sua página padrão de erro.

Vá até o endereço (localhost)/elmah.axd e você verá que agora o ELMAH registrou a exception no log!! Simples!

No próximo post, veremos como proteger o acesso ao endereço do log (elmah.axd).

Até lá!
__________________________

Este artigo faz parte da série:
1) Tratando erros com Elmah no ASP.NET MVC (parte 1 – Configuração)
2) Tratando erros com Elmah no ASP.NET MVC (parte 2 – HandleError)
3) Tratando erros com Elmah no ASP.NET MVC (parte 3 – Segurança)
4) Tratando erros com Elmah no ASP.NET MVC (parte 4 – Filtros)

Anúncios

Participe! Vamos trocar uma ideia sobre desenvolvimento de software!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s