Rastreamento, depuração e tratamento de erros no nível da página asp.Net [exemplo]

Em qualquer aplicativo, erros ocorrem durante o processo de desenvolvimento. É importante ser capaz de descobrir erros em um estágio inicial.

No Visual Studio, é possível fazer isso para aplicativos ASP.Net. Visual Studio é usado para depuração e tem técnicas de tratamento de erros para ASP.Net.

Neste tutorial, você aprenderá-

O que é depuração no ASP.NET?

A depuração é o processo de adicionar pontos de interrupção a um aplicativo. Esses pontos de interrupção são usados ​​para pausar a execução de um programa em execução. Isso permite que o desenvolvedor entenda o que está acontecendo em um programa em um determinado momento.

Vamos dar um exemplo de programa. O programa exibe uma string 'Estamos depurando' para o usuário. Suponha que quando executamos o aplicativo, por algum motivo, a string não é exibida. Para identificar o problema, precisamos adicionar um ponto de interrupção. Podemos adicionar um ponto de interrupção à linha de código que exibe a string. Este breakpoint irá pausar a execução do programa. Nesse ponto, o programador pode ver o que possivelmente está errado. O programador retifica o programa de acordo.

Aqui no exemplo, usaremos nosso 'DemoApplication' que foi criado nos capítulos anteriores. No exemplo a seguir, veremos

  • Como fazer o aplicativo demo exibir uma string.
  • Como adicionar pontos de interrupção a um aplicativo.
  • Como depurar o aplicativo usando este ponto de interrupção.

Passo 1) Vamos primeiro garantir que nosso aplicativo da Web esteja aberto no Visual Studio. Verifique se o DemoApplication está aberto no Visual Studio.

Passo 2) Agora abra o arquivo Demo.aspx.cs e adicione a linha de código abaixo.

  • Estamos apenas adicionando a linha de código Response.Write para exibir uma string.
  • Portanto, quando o aplicativo é executado, ele deve exibir a string 'Estamos depurando' no navegador da web.

namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write('We are debugging'); } } }

Etapa 3) Agora vamos adicionar um ponto de interrupção. Um ponto de interrupção é um ponto no Visual Studio onde você deseja que a execução do programa pare.

  1. Para adicionar um ponto de interrupção, você precisa clicar na coluna onde deseja que o ponto de interrupção seja inserido. Portanto, em nosso caso, queremos que nosso programa pare na linha de código 'Response.Write'. Você não precisa adicionar nenhum comando para adicionar um ponto de interrupção. Você só precisa clicar na linha na qual deseja adicionar um ponto de interrupção.
  2. Feito isso, você notará que o código fica marcado em vermelho. Além disso, uma bolha vermelha aparece na coluna ao lado da linha de código.

Observação: - Você pode adicionar vários pontos de interrupção em um aplicativo

Passo 4) Agora você precisa executar seu aplicativo usando o modo de depuração. No Visual Studio, escolha a opção de menu Depurar-> Iniciar Depuração.

Saída:-

Quando você executa todas as etapas corretamente, a execução do programa será interrompida. O Visual Studio irá para o ponto de interrupção e marcará a linha de código em amarelo.

Agora, se o programador sentir que o código está incorreto, a execução pode ser interrompida. O código pode então ser modificado de acordo. Para continuar com o programa, o programador precisa clicar no botão F5 no teclado.

O que é rastreamento no ASP.NET?

O rastreamento do aplicativo permite ver se alguma página solicitada resulta em erro. Quando o rastreamento está ativado, uma página extra chamada trace.axd é adicionada ao aplicativo. (Veja a imagem abaixo). Esta página está anexada ao aplicativo. Esta página mostrará todas as solicitações e seu status.

Vejamos como habilitar o rastreio para um aplicativo.

Passo 1) Vamos trabalhar em nosso 'DemoApplication'. Abra o arquivo web.config no Solution Explorer.

Passo 2) Adicione a linha de código abaixo ao arquivo Web.config.

A instrução trace é usada para habilitar o rastreio do aplicativo.

  • O 'requestLimit' na instrução trace é usado. Ele especifica o número de solicitações de página que devem ser rastreadas.
  • Em nosso exemplo, estamos fornecendo um limite de 40. Fornecemos limite porque um valor mais alto degradará o desempenho do aplicativo.

 

Execute o 'demoapplication' no Visual Studio.

Saída:-

Se você navegar até o URL - http: // localhost: 53003 / trace.axd , você verá as informações de cada solicitação. Aqui você pode ver se algum erro ocorre em um aplicativo. Os seguintes tipos de informação são mostrados na página acima

  1. A hora da solicitação da página da web.
  2. O nome da página da web que está sendo solicitada.
  3. O código de status da solicitação da web. (o código de status 200 significa que a solicitação foi bem-sucedida).
  4. Os detalhes de exibição que você permite ver mais detalhes sobre a solicitação da web. Um exemplo disso é mostrado abaixo. Uma informação detalhada importante fornecida é a informação do cabeçalho. Essas informações mostram quais são as informações enviadas no cabeçalho de cada solicitação da web.

Rastreamento em nível de página

O rastreamento de página mostra todas as informações gerais sobre uma página da web quando ela está sendo processada. Isso é útil na depuração se uma página não funcionar por qualquer motivo.

O Visual Studio fornecerá informações detalhadas sobre vários aspectos da página. Informações como a hora de cada método chamado na solicitação da web. Por exemplo, se seu aplicativo da web está tendo um problema de desempenho, essas informações podem ajudar a depurar o problema. Essas informações são exibidas quando o aplicativo é executado no Visual Studio.

Vejamos como habilitar o rastreio de um aplicativo no nível da página.

Passo 1) Vamos trabalhar em nosso DemoApplication. Abra o arquivo demo.aspx no Solution Explorer

Passo 2) Adicione a linha de código abaixo para habilitar o rastreamento de página. Na declaração da página, apenas acrescente a linha Trace = 'true'. Esta linha de código permitirá o rastreamento no nível da página.

 

Execute o aplicativo no Visual Studio.

Saída:-

Agora, quando a página Demo.aspx da web for exibida, você obterá muitas informações sobre a página. Informações como o tempo para cada aspecto do ciclo de vida da página são exibidas nesta página.

Tratamento de erros: exibição de uma página de erro personalizada

No ASP.Net, você pode ter páginas de erro personalizadas exibidas para os usuários. Se um aplicativo contiver qualquer tipo de erro, uma página personalizada exibirá esse erro para o usuário.

Em nosso exemplo, vamos primeiro adicionar uma página HTML. Esta página exibirá uma string para o usuário 'Estamos investigando o problema'. Em seguida, adicionaremos algum código de erro à nossa página demo.aspx para que a página de erro seja exibida.

Vamos seguir as etapas mencionadas abaixo

Passo 1) Vamos trabalhar em nosso DemoApplication. Vamos adicionar uma página HTML ao aplicativo

  1. Clique com o botão direito em DemoApplication no Solution Explorer
  2. Escolha a opção de menu 'Adicionar' -> Página HTML

Passo 2) Na próxima etapa, precisamos fornecer um nome para a nova página HTML.

  1. Forneça o nome como 'ErrorPage'.
  2. Clique no botão 'OK' para prosseguir.

Etapa 3) A página de erro será aberta automaticamente no Visual Studio. Se você for ao Gerenciador de Soluções, verá o arquivo adicionado.

Adicione a linha de código 'Estamos investigando o problema' à página HTML. Você não precisa fechar o arquivo HTML antes de fazer a alteração no arquivo web.config.

 We are looking into the problem 

Passo 4) Agora você precisa fazer uma alteração no arquivo web.config. Essa alteração notificará que, sempre que ocorrer um erro no aplicativo, a página de erro personalizada precisa ser exibida.

A tag 'customErrors' permite definir uma página de erro personalizada. A propriedade defaultRedirect é definida como o nome da página de erro personalizada criada na etapa anterior.

 

Etapa 5) Agora vamos adicionar algum código com defeito à página demo.aspx.cs. Abra esta página clicando duas vezes no arquivo no Gerenciador de Soluções

Adicione o código abaixo ao arquivo Demo.aspx.cs.

  • Essas linhas de código são projetadas para ler as linhas de um texto de um arquivo.
  • O arquivo deve estar localizado na unidade D com o nome 'Exemplo.txt'.
  • Mas, em nossa situação, esse arquivo realmente não existe. Portanto, este código resultará em um erro quando o aplicativo for executado.

namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String path = @'D:Example.txt'; string[] lines; lines = File.ReadAllLines(path); } } }

Agora execute o código no Visual Studio e você deve obter a saída abaixo.

Saída:-

A página acima mostra que um erro foi acionado no aplicativo. Como resultado, a página Error.html é exibida para o usuário.

Exceção não tratada ASP.NET

Mesmo no melhor dos cenários, pode haver casos de erros que simplesmente não são previstos.

Suponha que um usuário navegue até a página errada no aplicativo. Isso é algo que não pode ser previsto. Nesses casos, o ASP.Net pode redirecionar o usuário para a página de erro.html.

Vamos ver um exemplo disso.

  • Vamos usar nosso mesmo 'DemoApplication' que tem o Errorpage.html.
  • E tentaremos visualizar uma página da web que não existe em nosso aplicativo.
  • Devemos ser redirecionados para nossa página ErrorPage.html neste caso. Vamos ver as etapas para conseguir isso.

Passo 1) Vamos trabalhar em nosso DemoApplication. Abra o arquivo Global.asax.cs no Solution Explorer

NOTA : O arquivo global.asax.cs é usado para adicionar código que será aplicável em todas as páginas do aplicativo.

Passo 2) Adicione a linha de código abaixo ao global.asax.cs. Essas linhas serão usadas para verificar se há erros e exibir a página ErrorPage.html de acordo.

namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer('~/ErrorPage.html'); } } }

Explicação do código: -

  1. A primeira linha é o manipulador de eventos Application_Error. Este evento é chamado sempre que ocorre um erro em um aplicativo. Observe que o nome do evento deve ser 'Application_Error'. E os parâmetros devem ser os mostrados acima.
  2. A seguir, definimos um objeto do tipo de classe HttpException. Este é um objeto padrão que conterá todos os detalhes do erro. Em seguida, usamos o método Server.GetLastError para obter todos os detalhes do último erro ocorrido na aplicação.
  3. Em seguida, verificamos se o código de erro do último erro é 404. (O código de erro 404 é o código padrão retornado quando um usuário navega para uma página que não foi encontrada). Em seguida, transferimos o usuário para a página ErrorPage.html se o código de erro corresponder.

Agora execute o código no Visual Studio e você deve obter a saída abaixo

Saída:-

Navegue na página http: // localhost: 53003 / Demo1.aspx . Lembre-se de que Demo1.aspx não existe em nosso aplicativo. Você obterá a saída abaixo.

A página acima mostra que um erro foi acionado no aplicativo. Como resultado, a página Error.html é exibida para o usuário.

Log de erros ASP.NET

Ao registrar os erros do aplicativo, ajuda o desenvolvedor a depurar e resolver o erro posteriormente. ASP.Net tem a facilidade de registrar erros. Isso é feito no arquivo Global.asax.cs quando o erro é capturado. Durante o processo de captura, a mensagem de erro pode ser gravada em um arquivo de log.

Vamos ver um exemplo disso.

  • Vamos usar nosso mesmo DemoApplication que tem o Errorpage.html.
  • E tentaremos visualizar uma página da web que não existe em nosso aplicativo.
  • Devemos ser redirecionados para nossa página ErrorPage.html neste caso.
  • E, ao mesmo tempo, escreveremos a mensagem de erro em um arquivo de log. Vamos ver as etapas para conseguir isso.

Passo 1) Vamos trabalhar em nosso DemoApplication. Abra o arquivo Global.asax.cs no Solution Explorer

Passo 2) Adicione a linha de código abaixo ao global.asax.cs. Ele verificará se há erros e exibirá a página ErrorPage.html de acordo. Ao mesmo tempo, registraremos os detalhes do erro em um arquivo chamado 'AllErrors.txt'. Para nosso exemplo, iremos escrever o código para que este arquivo seja criado na unidade D.

namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =''; str = exc.Message; String path = @'D:AllErrors.txt'; File.WriteAllTest(path,str); Server.trrasfer('~/ErrorPage.html'); } } }

Explicação do código: -

  1. A primeira linha é obter o próprio erro usando o método 'Server.GetLastError'. Isso é então atribuído à variável 'exc'.
  2. Em seguida, criamos uma variável de string vazia chamada 'str'. Obtemos a mensagem de erro real usando a propriedade 'exc.Message'. A propriedade exc.Message terá a mensagem exata para qualquer erro que ocorra na execução do aplicativo. Isso é então atribuído à variável de string.
  3. A seguir, definimos o arquivo chamado 'AllErrrors.txt.' É para onde todas as mensagens de erro serão enviadas. Escrevemos a string 'str' que contém todas as mensagens de erro para este arquivo.
  4. Por fim, transferimos o usuário para o arquivo ErrorPage.html.

Saída:-

Navegue na página http: // localhost: 53003 / Demo1.aspx . Lembre-se de que Demo1.aspx não existe em nosso aplicativo. Você obterá a saída abaixo.

E ao mesmo tempo, se você abrir o arquivo 'AllErrors.txt', verá as informações abaixo.

A mensagem de erro pode então ser passada para o desenvolvedor em um momento posterior para fins de depuração.

Resumo

  • ASP.Net tem a facilidade de realizar depuração e tratamento de erros.
  • A depuração pode ser obtida adicionando pontos de interrupção ao código. Em seguida, executa-se a opção Start with Debugging no Visual Studio para depurar o código.
  • O rastreamento é a facilidade de fornecer mais informações durante a execução do aplicativo. Isso pode ser feito no nível do aplicativo ou da página.
  • No nível da página, o código Trace = true precisa ser adicionado à diretiva da página.
  • No nível do aplicativo, uma página extra chamada Trace.axd é criada para o aplicativo. Isso fornece todas as informações de rastreamento necessárias.