Share via


Como: Manipular erros de aplicativo

Esta exemplo de código mostra como criar um manipulador de erro no arquivo Global.asax que irá capturar todos os erros ASP.NET não tratados ao processar uma solicitação — em outras palavras, todos os erros que não são detectados com um bloco Try/Catch ou em um manipulador de erro no nível da página.No exemplo, o manipulador transfere o controle para uma página de erro genérica chamada GenericErrorPage.aspx, que interpreta o erro e exibe uma mensagem apropriada.

Exemplo

O exemplo a seguir é de um exemplo de código completo em Concluir exemplo para manipuladores de erro

Para ativar o manipulador de eventos de erro no arquivo Global.asax, o arquivo Web.config não pode especificar um arquivo para defaultRedirect.O arquivo de configuração terá precedência.Portanto, você pode definir customErrors como Off ou remover a configuração defaultRedirect.Se o arquivo de configuração Web.config tiver customErrors definida como Off, o manipulador de eventos Application_Error no Global.asax processará todos os erros não tratados.

Observação de segurança:

Nunca defina customErrors para Off no arquivo Web.config se você não tiver um manipulador Application_Error no arquivo Global.asax.Informações potencialmente comprometedoras sobre seu site da Web podem ser expostas a qualquer pessoa que pode causar um erro no seu site.

Programação robusta

É melhor usar blocos Try/Catch ao redor qualquer código que está sujeito a erros em vez de confiar em um manipulador de erro global.

Um manipulador de erro que é definido no arquivo Global.asax somente tratará erros que ocorrem durante processamento de solicitações no tempo de execução do ASP.NET.Por exemplo, ele vai capturar o erro se um usuário solicitar um arquivo .aspx que não ocorre no seu aplicativo.No entanto, ele não captura o erro se um usuário solicitar um arquivo .htm inexistente.Para erros que não sejam do ASP.NET, você pode criar um manipulador personalizado no Serviços de Informações da Internet (IIS).O manipulador personalizado também não será chamado para erros no nível de servidor.

Você não pode emitir diretamente informações de erro para solicitações a partir do arquivo Global.asax; você deve transferir controle para outra página, geralmente uma página Web Forms.Ao transferir o controle para outra página, use o método Transfer.Isso preserva o contexto atual de modo que você possa obter informações de erro do método GetLastError.

Após manipular um erro, você deve apagá-lo chamando o método ClearError do objeto Server (Classe HttpServerUtility).

Segurança

Não se esqueça de não exibir informações de erro que podem ajudar usuários mal-intencionados a comprometer seu aplicativo.Para obter detalhes, consulte:Como: Exibição Safe erro Messages.

Consulte também

Tarefas

Como: Manipular erros de página

Conceitos

Concluir exemplo para manipuladores de erro