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):
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):
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:
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:
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.