Artigos

Tratar erros do ASP.NET com uma página customizada

Por Mauricio D. Bernert - junho/2010

Objetivo:

Criar uma tela de erro customizada para ser apresentada ao usuário e alertar o desenvolvedor sobre o erro.

 

Como Funciona:

Através de uma DLL adicionada ao projeto, os erros são capturados e o usuário é redirecionado à uma pagina de erros customizada, onde pode enviar um e-mail ao desenvolvedor com informações sobre o erro.

 

Como Usar:

Faça o download do arquivo GHN.TrataErro.zip.

Adicione a DLL "GHN.TrataErros.dll", encontrada no .zip baixado, como referência em seu projeto.

Adicione também, algumas linhas no arquivo Web.Config de seu projeto, sendo elas:

Variáveis (appSettings):

  • TrataErro_EnviaEmail - Se você desejar que as informções do erro sejam enviadas diretamente para o desenvolvedor, através da DLL, seu valor deve ser "true".
  • TrataErro_ClienteSMTP - Cliente SMTP de e-mail.
  • TrataErro_PortaSMTP - Porta SMTP de e-mail.
  • TrataErro_EmailPara - Destinatário do e-mail.
  • TrataErro_EmailDe - Remetente do e-mail.
  • TrataErro_SenhaEmail - Senha do e-mail remetente.
  • TrataErro_TelaErro - Path da tela de erros customizada, para onde deve ser redirecionado o cliente quando um erro acontece.
  • TrataErro_TemplateEmail - Path do template do e-mail que sera enviado ao desenvolvedor.

Exemplo de appSettings: 

<appSettings>
    <add key="TrataErro_ClienteSMTP" value="smtp.ghn.com.br"/>
    <add key="TrataErro_PortaSMTP" value=""/>
    <
add key="TrataErro_EmailPara" value="destinatario@ghn.com.br" />
    <
add key="TrataErro_EmailDe" value="remetente@ghn.com.br"/>
    <
add key="TrataErro_SenhaEmail" value="qwerty123456"/>
    <
add key="TrataErro_EnviaEmail" value="true"/>
    <
add key="TrataErro_TelaErro" value="~/Anexos/TelaErro.aspx"/>
    <
add key="TrataErro_TemplateEmail" value="~/Anexos/Email.htm"/>
</
appSettings>
<
system.web>

 

HttpModule (system.web):

  • type="GHN.TrataErro" e name="<Nome desejado para o módulo>"

Exemplo:

    <httpModules>
        <
add type="GHN.TrataErro" name="TrataErro" />
    </
httpModules>
</
system.web>

Na pasta "Anexos" do zip baixado, existem dois arquivos chamados "TelaErro.aspx" e "TemplateEmail.htm", que são exemplos de uma tela de erro e um template de e-mail que podem ser utilizados no seu projeto.

Se prefirir, você pode criar uma tela e um template customizados, lembrando de atualizar os Paths no Web.Config ("TrataErro_TelaErro" e "TelaErro_TemplateEmail").

Ao ocorrer um erro, as seguintes informações são passadas para a tela customizada, através da sessão:

  • "URL" (string): URL da pagina onde ocorreu o erro.
  • "Query" (string): Query String da pagina onde ocorreu o erro.
  • "Form" (string): Form da pagina onde ocorreu o erro.
  • "Erro" (Exception): Erro ocorrido.

No template de e-mail, os seguintes parâmetros (internamente, eles serão usados através método String.Format: http://msdn.microsoft.com/en-us/library/system.string.format.aspx) podem ser utilizados:

  • {0}: Pagina onde foi encontrado o erro
  • {1}: Query String da pagina onde o erro ocorreu.
  • {2}: Form da pagina onde o erro ocorreu.
  • {3}: Métodos do erro.
  • {4}: Stack Trace completo do erro.

 

Comportamento do Erro:

Ao ocorrer um erro, o usuário será automaticamente redirecionado à URL contida na key "TrataErro_TelaErro" do Web.Config e os atributos do erro serão gravados na sessão.

As outras chaves do Web.Config serão utilizadas para o envio de e-mails. Se "TrataErro_EnviaEmail" possuir valor "true", o envio automático de e-mails através da DLL estará ativado.