Como criar relatórios páginas em ASP.NET usando o Visual translation from VPE for Csharp .NET de erro personalizadas

ID do artigo: 306355 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Nesta página

Sumário

Este artigo descreve como usar o código do Visual .NET translation from VPE for Csharp para interceptar e responder a erros quando eles ocorrerem no ASP.NET. ASP.NET melhorou o erro de manipulação de opções do tradicional Microsoft Active Server Pages (ASP). No ASP.NET, você pode manipular erros em vários níveis diferentes em seus aplicativos.

Novos recursos no ASP.NET

O ASP.NET oferece vários avanços em como você pode manipular e responder a erros. No ASP tradicional, você manipular erros com "On Error Resume Next" (ou blocos try-catch no JScript). Como alternativa, se você estiver executando o Microsoft Internet Information Services (IIS) 5.0, você usar o objeto ASPError para criar uma página de relatório de erro personalizada. No entanto, essas abordagens têm suas limitações.

O ASP.NET fornece vários níveis em que você pode manipular e responder a erros que podem ocorrer quando você executa um aplicativo ASP.NET. O ASP.NET fornece três métodos principais que permitem que você interceptar e responder a erros quando eles ocorrerem: Page_Error , Application_Error e o arquivo de configuração de aplicativo (Web.config).

Este artigo demonstra como usar esses novos recursos no ASP.NET seu aplicativo. Embora este artigo descreve como fornecer relatórios de erros gerais como ela se relaciona diretamente para o ASP.NET e páginas de erro personalizadas, este artigo não descrever outro erro tratamento abordagens, como o bloco try-catch-finally e o sistema de exceção do CLR (Common Language Runtime).

Como usar o método Page_Error

O manipulador de evento Page_Error fornece uma maneira para interceptar erros que ocorrem no nível da página. Você pode simplesmente exibir informações de erro (como o código de exemplo a seguir), ou você pode registrar o evento ou realizar alguma outra ação.

Observação Este exemplo exibe informações de erro detalhadas no navegador apenas para fins de demonstração. Você desejará ter cuidado ao exibir informações detalhadas para o usuário final do aplicativo, especialmente quando o aplicativo é executado na Internet. Seria uma ação mais apropriada exibir uma mensagem para o usuário notificando que ocorreu um erro e o log, na verdade, os detalhes de erro específico no log de eventos.

Este exemplo lança uma exceção nula, o que força um erro ocorra no manipulador de eventos Page_Load . Siga estas etapas para criar a página inicial que irá demonstrar usando o manipulador de evento Page_Error .
  1. Siga estas etapas para adicionar um novo arquivo chamado PageEvent.aspx ao seu projeto:
    1. Abra o Microsoft Visual Studio .NET.
    2. No Solution Explorer, clique com o botão direito no nó do projeto, aponte para Add e, em seguida, clique em Add Web Form .
    3. Na caixa de texto nome , digite PageEvent.aspx e, em seguida, clique em Abrir .
  2. Adicione o seguinte código para PageEvent.aspx:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    Observação Neste exemplo de código, o atributo AutoEventWireup não é explicitamente definido. Se você não atribuir explicitamente um valor para o atributo AutoEventWireup , será usado o padrão valor true . Se você estiver usando o Visual Studio .NET para desenvolver seus aplicativos, o código de modelo de formulário da Web define explicitamente o valor de atributo AutoEventWireup para false . Há uma diferença importante entre o valor padrão que o ASP.NET usa e o valor padrão que o código de modelo do Visual Studio .NET atribui a esse atributo. Se o valor do atributo AutoEventWireup é definido como false , os manipuladores de eventos são declarados na página .aspx não são acionados. Isso pode ser confuso se você não souber sobre essa funcionalidade.
  3. No menu arquivo , clique em Salvar PageEvent.aspx .
  4. Clique a página com o botão direito do mouse e, em seguida, clique em View in Browser para executar a página. Observe que o erro é lançado e informado de acordo com as especificações de código.
Observação Você pode perceber que o código emite uma chamada para Server.ClearError . Isso impede que o erro continuar ao manipulador de eventos Application_Error .

Além disso, você deve também observe o atributo Inherits na diretiva @ Page . Se Inherits estiver definida, você deve criar o projeto antes de navegar para a página. Se você não criar primeiro o projeto, você receber a seguinte mensagem de erro:
'Project.PageEvent' não é um tipo válido

Como usar o método Application_Error

Como o manipulador de evento Page_Error , você pode usar o manipulador de eventos Application_Error para interceptar erros que ocorrem em seu aplicativo. Devido ao escopo de todo o aplicativo do evento, você faça das informações de erro do aplicativo ou manipular outros erros de nível de aplicativo que podem ocorrer.

O exemplo a seguir é baseado no exemplo de código anterior Page_Error e deve ser acionado se o erro em Page_Load não foi interceptado no manipulador de evento Page_Error . O manipulador de eventos Application_Error é especificado no arquivo global.asax do seu aplicativo. Para manter a simplicidade, as etapas nesta seção criam uma nova página na qual lançar a exceção, interceptar o erro no manipulador de eventos Application_Error do arquivo global.asax e escrever o erro no log de eventos. As etapas a seguintes demonstram como usar o método Application_Error :
  1. Adicione um novo arquivo chamado AppEvent.aspx ao seu projeto.
  2. Adicione o seguinte código para AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Observação As informações discutidas na seção " Page_Error " sobre o atributo AutoEventWireup também se aplica ao exemplo de código nesta etapa. Consulte as informações na seção " Page_Error " para obter mais detalhes.
  3. No menu arquivo , clique em Salvar AppEvent.aspx .
  4. Adicione o manipulador de eventos Application_Error ao arquivo global.asax para interceptar o erro que você lançar no manipulador de eventos Page_Load da página AppEvent.aspx. Observe que você deve adicionar outra instrução using para o namespace System.Diagnostics Global.asax para usar o log de eventos.

    Adicione o seguinte código ao arquivo global.asax:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Salve o arquivo global.asax.
  6. No Visual Studio. NET, no menu Build , clique em criar .
  7. Clique a página com o botão direito do mouse e clique em View in Browser . Nesse caso, a página ficará em branco, no entanto, você deve observar que foi adicionada uma nova entrada no log de eventos. Este exemplo cria uma entrada no log do aplicativo, que é acessível a partir de Visualizar eventos. Depois de fazer o erro convém para redirecionar o usuário para outra página de erro mais amigável, ou executar algumas ações adicionais se necessário.

Como usar o arquivo Web.config

Se você não chama Server.ClearError ou interceptação de erro em Page_Error ou manipulador de eventos Application_Error , o erro é tratada com base nas configurações na seção <customerrors> do arquivo Web.config. Na seção <customerrors>, você pode especificar uma página de redirecionamento como um (de página de erro padrão defaultRedirect ) ou especificar uma página específica com base no código de erro HTTP que é gerado. Você pode usar esse método para personalizar a mensagem de erro que o usuário recebe.

Se ocorrer um erro que não é retida em qualquer um dos níveis anteriores em seu aplicativo, essa página personalizada é exibida. Esta seção demonstra como modificar o arquivo global.asax, de modo que Server.ClearError nunca seja chamado. Como resultado, o erro é tratado no arquivo Web.config como o último ponto para interceptar o erro.
  1. Abra o arquivo global.asax do exemplo anterior.
  2. Comentário da linha Server.ClearError para garantir que o erro surfaces no Web.config arquivo.
  3. Salve as alterações para global.asax. Seu código deverá ser exibida semelhante à seguinte:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. Adicione o seguinte código para a seção <customerrors> para redirecionar o usuário para uma página personalizada:
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Observação você deve modificar o caminho do arquivo no atributo defaultRedirect para que ele faz referência os nomes de servidor e o aplicativo de Web relevantes.
  5. Como os erros que são interceptados nesse nível são enviados para uma página de erro padrão, você deve criar uma página de erro chamada ErrorStatus.htm. Tenha em mente que você está usando esse método para controlar o que é apresentado ao usuário, portanto, este exemplo usa uma página .htm para a página de erro. Adicione o seguinte código para ErrorStatus.htm:
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. Para testar o código, salvar os arquivos, criar o projeto e, em seguida, exibir AppEvent.aspx no navegador. Observe que quando o erro é lançado, você é redirecionado para a página ErrorStatus.htm.
Embora pode fazer referência a uma página de erro padrão no valor do atributo defaultRedirect na seção <customerrors>, você também pode especificar uma página específica para redirecionar para baseia o código de erro HTTP que é gerado. O elemento filho <error> permite essa opção. Por exemplo:
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Observação A página que está especificada no defaultRedirect da seção <customerrors> é um arquivo .htm. I

Observe que a seção <customerrors> inclui umatributo de modo que é definido como ativado . O atributo mode é usado para controlar como o redirecionamento de erro ocorre. Por exemplo, se você estiver desenvolvendo o aplicativo, você provavelmente deseja ver as mensagens de erro ASP.NET reais e não deseja ser redirecionado para a página de erro mais amigável. O atributo mode inclui as seguintes configurações:
  • no : exceções sem tratamento redirecionar o usuário para a página especificada defaultRedirect . Esse modo é usado principalmente em produção.
  • Desativar : usuários receber as informações de exceção e não são redirecionados para a página defaultRedirect . Esse modo é usado principalmente no desenvolvimento.
  • RemoteOnly : somente os usuários que acessar o site no computador local (usando localhost) recebem as informações de exceção. Todos os outros usuários são redirecionados para a página defaultRedirect . Esse modo é usado principalmente para depuração.

Solução de problemas

Em sua instalação padrão no Microsoft Windows 2000 e no Microsoft Windows XP, ASP.NET é executado código de aplicativo da Web em um processo de trabalho. A identidade desse processo padrão é uma conta local não privilegiada chamada a conta ASPNET. Em versões beta do ASP.NET, a identidade do processo era System, uma conta administrativa eficiente com muitos privilégios no computador.

Em sua instalação padrão no Windows Server 2003 (IIS 6), ASP.NET é executado código de aplicativo da Web em um processo de trabalho. A identidade desse processo padrão é uma conta limitada chamada NetworkService.

Para obter mais informações sobre essa alteração e como ele pode efeito que estejam executando o código neste artigo e outro código que talvez precisem direitos de acesso adicionais, visite os seguintes sites:
Versão 1 alterações de segurança para o Microsoft .NET Framework
http://msdn2.microsoft.com/en-us/library/ms994923.aspx

Referências

Para obter mais informações, visite os seguintes sites:
Gerenciamento de exceção no .NET
http://msdn2.microsoft.com/en-us/library/ms954599.aspxMétodo HttpServerUtility.ClearError
http://msdn2.microsoft.com/en-us/library/system.web.httpserverutility.clearerror(vs.71).aspxMSDN .NET Development Center
http://msdn2.microsoft.com/en-us/netframework/default.aspxHome page do Microsoft .NET
http://www.microsoft.com/net/

Propriedades

ID do artigo: 306355 - Última revisão: terça-feira, 28 de agosto de 2007 - Revisão: 4.8
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbconfig kbhowtomaster kbweb KB306355 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306355

Submeter comentários