Demonstra Passo a passo: Usando rastreamento no Visual Web Developer para ajuda a localizar erros em página da Web
Há várias maneiras para localizar erros em uma página Web do ASP.NET.Incluindo o uso do depurador e rastreamento.O rastreamento exibe mensagens sobre as ações que ocorrem durante o processamento de página e pode incluir informações que você escolher para serem exibidas.O rastreamento também fornece informações sobre os dados que estão sendo trocados pelo servidor e o navegador.A troca de dados inclui detalhes de controle, variáveis de servidor, nome de usuário, cookies e assim por diante.Essa explicação passo a passo mostra como usar o rastreamento.
O rastreamento é útil quando não é aconselhável, ou é simplesmente impraticável, usar o depurador.Por exemplo, o depurador pode não estar disponível, pois as páginas estão em um servidor remoto.O rastreamento também facilita a visualização de informações, como o cabeçalho HTTP, que não está explicitamente disponível no depurador .Para obter informações gerais sobre a depuração, consulte Passo-a-passo: Depuração de Páginas da Web no Visual Web Developer.
Neste passo a passo, você irá trabalhar com rastreamento.Você criará um página da Web que solicita ao usuário um nome e, em seguida, exibe este nome.A página também armazena o nome em um cookie para que o usuário não tenha que digitar novamente.
Observação: |
---|
Em um aplicativo de produção, uma técnica melhor para armazenar informações pessoais é usar propriedades de perfil do ASP.NET.Para informações detalhadas, consulte Visão geral sobre propriedades de perfil do ASP.NET.No entanto, usar um cookie nessa explicação passo a passo simplifica o código, permitindo que você focalize o rastreamento. |
Neste passo a passo, você irá, intencionalmente, introduzir alguns erros.Em seguida, usará o rastreamento para ver o status de processamento da página, que ajudará a diagnosticar os erros.
Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:
Habilitar o rastreamento para uma única página.
Saída do rastreamento de leitura.
Exibir informações de rastreamento personalizadas.
Exibir informações de rastreamento em uma janela de rastreamento separada.
Criar uma saída de rastreamento personalizada.
Pré-requisitos
Para concluir esta explicação passo a passo, será necessário o seguinte:
Ferramenta de desenvolvimento Microsoft Visual Web Developer.
O .NET Framework.
Esta explicação passo a passo presume que você tenha uma compreensão geral de trabalho no Visual Web Developer.For an introduction to Visual Web Developer, see Demonstra Passo a passo: Criando um Basic página da Web no Visual Web Developer.
Criando o Site Web
Se você já criou um site no Visual Web Developer completando Demonstra Passo a passo: Criando um Basic página da Web no Visual Web Developer, você pode usar esse site e seguir para "Adicionando Controles", mais adiante neste passo a passo.Caso contrário, crie um site e uma página novos, seguindo estas etapas.
Observação: |
---|
Este passo a passo assume que você está trabalhando com um página ASP.NET que usa um arquivo code-behind para seu código. |
Para criar um site do sistema de arquivos
Abra o Visual Web Developer.
No menu File, clique em NewWeb Site.
The Novo site caixa de diálogo é exibida.
Em O Visual Studio installed templates, clicar Site da Web do ASP.NET.
Na caixa Location mais a direita, insira o nome da pasta onde você deseja manter as páginas do site.
Por exemplo, digite o nome da pasta C:\WebSites.
No Idioma lista, clicar na linguagem de programação que você prefere para trabalhr.
Clique em OK.
Visual Web Developer cria a pasta e uma nova página chamada Default.aspx.
Adicionando uma Página
Se você estiver usando um site existente, você pode criar uma nova página.Se você já tiver uma página que você possa usar para essa explicação passo a passo, vá para a próxima seção.
Para criar uma nova página
No Solution Explorer, clique com o botão direito do mouse no nome do site e, em seguida, clique em Add New Item.
Na caixa de diálogo Add New Item <Path> abaixo de Visual Studio installed templates, clique em Web Form.
Na caixa Name, digite FirstWebPage.aspx.
No Idioma lista, clicar na linguagem de programação que você prefere para trabalhr.
Se você está criando uma página no Visual Basic ou C#, marque a caixa de seleção Place code in separate file.
Clique em Adicionar.
Adicionar Controles
Após criar um site e abrir uma página, a próxima etapa será adicionar alguns controles à página.
Para adicionar controles e código para depuração
Vá para o modo Design e, em seguida, a partir do grupo Standard da caixa de ferramentas, arraste os seguintes controles para a página e defina suas propriedades conforme indicado na tabela.
Controle
Propriedades
TextBox
ID textName
Text: (vazio)
Button
ID: buttonDisplayName
Text: Submeter
Label
ID labelName
Text: (vazio)
Observação: Para esta explicação passo a passo, o leiaute da página não é importante.
Adicionando Código
A próxima etapa é adicionar código à página.Quando a página estiver executando corretamente, o usuário pode inserir um nome e, em seguida, clicar em Submit, o que exibirá o nome no controle Label.Se o usuário fechar o navegador e, em seguida, retornar à página, está já terá o nome do usuário, pois o nome foi armazenado no cookie.
As seguintes etapas irão orientá-lo sobre como adicionar o código.Nem o procedimento para adicionar o código nem o próprio código aqui mostrados estão completamente corretos.Isto é intencional, pois assim você poderá usar o rastreamento para localizar os erros na página.
Para adicionar código
No Solution Explorer, clique com o botão direito do mouse em FirstWebPage.aspx e, em seguida, clique em View Code.
Observação: Não clique duas vezes no botão no modo Design.
Dentro da definição da classe, insira o código a seguir.
Observação: Se você estiver trabalhando com uma página de arquivo único, cole o código no bloco <script>.
Protected Sub buttonDisplayName_Click(ByVal sender As Object, _ ByVal e As EventArgs) labelName.Text = Server.HtmlEncode(textName.Text) Response.Cookies("username").Value = labelName.Text End Sub
protected void buttonDisplayName_Click(Object sender, EventArgs e) { labelName.Text = Server.HtmlEncode(textName.Text); Response.Cookies["username"].Value = labelName.Text; }
O código executa as seguintes tarefas:
Lê o valor do controle TextBox e exibe este valor no controle Label.Como parte da lógica do programa, o código chama o método HtmlEncode, que transforma os caracteres HTML potencialmente executáveis, como o símbolo de menor que (<), em seus equivalentes para exibição.Esta é uma medida de segurança para prevenir scripts maliciosos.Para informações detalhadas, consulte Scripts Maliciosos.
Cria um cookie denominado username que armazena o valor que o usuário inseriu.
Adicione o seguinte método, acima ou abaixo do manipulador Click que você criou na etapa anterior.
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles Me.Load If Not Request.Cookies("username") Is Nothing Then labelName.Text = Request.Cookies("username").Value End If End Sub
void Page_Load(Object sender, EventArgs e) { if(Request.Cookies["username"] != null) { labelName.Text = Request.Cookies["username"].Value; } }
Testando a Página
Agora você pode testar a página.Se você seguiu as etapas intencionalmente incompletas do procedimento da seção anterior, a página ainda não funcionará como projetado.
Para testar a página
Pressione CTRL+F5 para executar a página.
Quando a página aparecer, na caixa de texto, digite seu nome e, em seguida, clique em Submit.
Observe que, embora clicar em Submit tenha feito a página ser postada de volta ao servidor, o seu nome não é exibido.
Feche o navegador.
Agora você pode usar o rastreamento para ajudá-lo a encontrar os erros na página.
Usando Rastreamento para Localizar Erros
Nesta seção, você irá habilitar o rastreamento para a página.Você irá examinar a saída do rastreamento e, em seguida, irá incluir mensagens de rastreamento personalizadas que ajudarão a apontar os erros na página.
Para habilitar o rastreamento para a página
Abra a página FirstWebPage.aspx e vá para modo Design.
Em Properties, na lista, clique em DOCUMENT.
Isso exibe as propriedades da página.
Defina Trace como true.
Na verdade, a configuração do rastreamento é parte da diretiva @ Page.Você pode verificar indo ao modo de exibição de código fonte e olhando para a primeira linha em cada página.A diretiva @ Page terá um aspecto semelhante a:
<%@ Page language="VB" Trace="true" %>
<%@ Page language="C#" Trace="true" %>
Pressione CTRL+F5 para executar a página.
A página é exibida no navegador.Na parte superior, você pode ver o texto e os controles que você inseriu na página.Abaixo do texto e dos controles, você pode ver a saída do rastreamento, que exibe vários detalhes sobre o processamento de página e inclui as seguintes informações:
A sequência de eventos que ocorreu enquanto a página estava executando.
Os tipos, nomes e tamanhos dos controles da página.
Os cookies e seus respectivos conteúdos.
As variáveis de servidor que são uma coleção de todas as informações que o navegador envia para o servidor.
Observe que em Request Details (o primeiro bloco de informações de rastreamento), o Request Type é GET.Isso indica que é a primeira vez que a página é executada, ou seja, não é um postback.
Na caixa, digite um nome e, em seguida, clique em Submit
Agora o Request Type é POST.Isso indica que agora temos um postback para a página.Clicar em Submit não fará o nome ser exibido.
Feche o navegador.
Você pode usar uma saída personalizada para ajudá-lo a seguir a lógica da página.
Para adicionar uma saída personalizada
Adicione as seguintes linhas realçadas ao manipulador buttonDisplayName_Click que você criou em " Adicionando Código", anteriormente neste passo a passo:
Protected Sub buttonDisplayName_Click(ByVal sender As Object, _ ByVal e As EventArgs) Trace.Warn("debugging", "Start buttonDisplayName Click handler") labelName.Text = Server.HtmlEncode(textName.Text) Response.Cookies("username").Value = labelName.Text Trace.Warn("debugging", "End buttonDisplayName Click handler") End Sub
protected void buttonDisplayName_Click(Object sender, EventArgs e) { Trace.Warn("debugging", "Start buttonDisplayName Click handler"); labelName.Text = Server.HtmlEncode(textName.Text); Response.Cookies["username"].Value = labelName.Text; Trace.Warn("debugging", "End buttonDisplayName Click handler"); }
O método Warn adiciona suas mensagens personalizadas à saída do rastreamento.Embora a classe TraceContext também fornece um método Write, o método Warn é mais útil porque a saída é exibida em cores.
Pressione CTRL+F5 para executar a página.
Clique em Submit.
Quando você examinar a saída do rastreamento, você irá notar que a saída não contém textos em vermelho.Pode-se concluir a partir dessa observação que o manipulador Click de Submit não está sendo chamado.
A razão mais comum para um manipulador não estar sendo chamado deve-se ao fato de que o controle não foi vinculado corretamente ao manipulador de eventos .Isso se aplica a esse caso — embora você tenha adicionado o código para tratar o evento, você não vinculou o evento Click do botão Submit ao manipulador.Normalmente, o Visual Web Developer vincula o evento ao controle quando você clica duas vezes no controle no modo Design.
Feche o navegador.
No modo de exibição de código-fonte, adicione o atributo a seguir para o elemento <asp:button>:
<asp:button id="buttonDisplayName" text="Submit" onclick="buttonDisplayName_Click" />
Pressione CTRL+F5 para executar a página.
Na caixa, digite um nome e, em seguida, clique em Submit
A saída personalizada aparecerá em vermelho na seção Trace Information, que lista as etapas de processamento pelas quais a página passou.
A saída contida nesta seção mostra as mensagens na ordem em que ocorram durante o processamento de página.Você adicionou suas mensagens no manipulador de eventos Click, que é processado entre as linhas Begin Raise PostBackEvent e End Raise PostBackEvent.Incluir mensagens personalizadas permite a você saber não apenas que o manipulador foi chamado, mas também onde, no ciclo de processamento de página, o código é executado.
A categoria próxima às suas mensagens personalizadas é debugging, que é a categoria que você especificou quando você chamou o método Warn.Você pode especificar qualquer categoria que desejar, e, se ela for útil, você pode definir a propriedade TraceMode para a página para o valor SortByCategory para facilitar localizar a categoria na saída de rastreamento.
Além disso, observe que o nome que você inseriu é exibido no rótulo.
Agora o manipulador Click do botão Submit está funcionando corretamente, você pode testar o restante do código da página, incluindo o cookie.
Para testar o cookie
Feche o navegador.
Pressione CTRL+F5 para executar a página.
O comportamento esperado é que o nome que você digitou apareça automaticamente no label, pois o manipulador Click do botão Submit define um cookie e o manipulador Page_Load lê esse cookie durante o próximo postback.Entretanto, o Label nunca definido a partir do cookie.
Se você estiver escrevendo um cookie, mas ele não está sendo armazenado, o problema, frequentemente, é que você não está definindo uma data de validade explícita para o cookie.Um cookie sem uma data de validade é um cookie de sessão.Um cookie de sessão é mantido na memória do servidor até que o navegador seja fechado.Em outras palavras, o cookie não é gravado.Você irá corrigir este problema nas etapas seguintes.
Feche o navegador.
No modo de exibição de código-fonte, adicione a seguinte linha realçada ao manipulador buttonDisplayName_Click:
Protected Sub buttonDisplayName_Click(ByVal sender As Object, _ ByVal e As EventArgs) Trace.Warn("debugging", "Start buttonDisplayName Click handler") labelName.Text = Server.HtmlEncode(textName.Text) Response.Cookies("username").Value = labelName.Text Response.Cookies("username").Expires= _ DateTime.Now.AddMinutes(30) Trace.Warn("debugging", "End buttonDisplayName Click handler") End Sub
protected void buttonDisplayName_Click(Object sender, EventArgs e) { Trace.Warn("debugging", "Start buttonDisplayName Click handler"); labelName.Text = Server.HtmlEncode(textName.Text); Response.Cookies["username"].Value = labelName.Text; Response.Cookies["username"].Expires= DateTime.Now.AddMinutes(30); Trace.Warn("debugging", "End buttonDisplayName Click handler"); }
A nova linha define explicitamente que o cookie irá expirar em 30 minutos.
Pressione CTRL+F5 para executar a página.
Na caixa, digite um nome e, em seguida, clique em Submit
O nome é exibido no navegador.Na saída Response Cookies Collection, você pode ver que cookie está sendo definido.
Feche o navegador.
Pressione CTRL+F5 para executar a página.
Agora, o nome é preenchido automaticamente.Na saída Request Cookies Collection, você pode ver agora que o navegador está passando o cookie para sua página.
Exibindo Informações de Rastreamento em um Visualizador de Rastreamento
Definir que a página exiba a saída do rastreamento é útil quando você estiver trabalhando com apenas uma única página.Entretanto, se você estiver trabalhando com várias páginas em seu aplicativo, pode ser inconveniente ter que habilitar e desabilitar o rastreamento para cada página.Além disso, exibir as informações da saída do rastreamento na página enquanto a mesma estiver sendo executada pode ser uma distração.Independente disto, você também não deve querer que a página mostre saída do rastreamento aos usuários do seu aplicativo.
Você pode configurar o rastreamento não apenas a nível da página mas também a nível do aplicativo.Definir o rastreamento de aplicativo possui duas vantagens
Você pode habilitar e desabilitar o rastreamento para todas as páginas ao mesmo tempo
Você pode exibir a saída do rastreamento em uma nova janela do navegador — o visualizador de rastreamento — em vez exibi-la como parte da saída da página.
Quando um rastreamento de aplicativo é habilitado, o ASP.NET mantém a saída do rastreamento de todas as páginas em uma cache.Você pode definir algumas opções que especificam quantas páginas devem ser armazenadas na cache e se deseja manter as entradas mais recentes ou as mais antigas.Você pode, em seguida, chamar o visualizador de rastreamento no navegador e selecionar a saída a ser examinada.
Nesta seção do passo a passo, você irá habilitar o rastreamento de aplicativo e usar o visualizador de rastreamento para examinar a saída do rastreamento.
Para habilitar rastreamento de aplicativo
Vá para modo de exibição de código-fonte e, na diretiva @ Page na parte superior da página, exclua Trace="true".
Observação: Remova o atributo, não apenas o defina como false.Caso contrário, as etapas subsequentes neste passo a passo não funcionarão corretamente
No menu Website, clique em ASP.NET Configuration.
Aparecerá a Web Site Administration tool do ASP.NET.
Clique em Application Configuration.
Em Debugging and Tracing, clique em Configure debugging and tracing e marque a caixa de seleção Capture tracing information.
Essa configuração habilita o rastreamento de aplicativo.
Para este passo a passo, você pode deixar as configurações restantes com seus valores padrão.O ASP.NET irá armazenar na cache até 10 entradas da saída do rastreamento (10 postbacks de uma única página ou menos postbacks, cada um para várias páginas) e também as entradas mais recente.
Feche a Web Site Administration tool do ASP.NET.
Agora você pode executar a página original e trabalhar com ela na forma em que um usuário a verá.Entretanto, ao mesmo tempo, é possível exibir a saída do rastreamento quando for necessário em uma nova janela do navegador.
Para exibir a saída do rastreamento em uma nova janela do navegador
Pressione CTRL+F5 para executar a página.
Observe que a página não exibe a saída do rastreamento.A página está exatamente como um usuário a veria.
Na caixa, digite um nome e, em seguida, clique em Submit para confirmar que a página está funcionando corretamente.
Abra uma nova janela do navegador.
No navegador, no Endereço caixa, digite a URL do seu site, substituindo trace.axd para o nome da página com a qual você está trabalhando com.
Por exemplo, se A URL para a página for:
https://localhost:8081/WebSite/Default.aspx
Digite o seguinte:
https://localhost:8081/WebSite/trace.axd
Observação: Uma maneira rápida de realizar essa tarefa é copiar a URL da página original e alterar apenas o nome da página.
O navegador exibirá a cache atual de entradas do rastreamento.
Clique em View Details para a última entrada do rastreamento (a mais recente).
O navegador irá exibir uma saída semelhante à que você viu anteriormente neste passo a passo, exceto que ela não está acrescentada ao final da página.
Vá para a instância do navegador que contém a página original.
Na caixa, digite um novo nome e, em seguida, clique em Submit
Essa ação gera uma nova entrada de log do rastreamento.
Vá para a instância do navegador que contém as informações.
No navegador, clique em Back para retornar à lista das entradas de rastreamento e, em seguida, clique em Refresh para atualizar a lista.
Uma nova entrada aparecerá para representar a saída criada na etapa 7.
Feche as duas janelas navegador.
Criando Uma Saída de Rastreamento Personalizada
Como já foi visto, a saída do rastreamento contém muitas informações, às vezes mais do que você precisa.Por exemplo, talvez você queira limitar a saída do rastreamento para exibir apenas as saídas que você criou.O rastreamento permite a você ler o conteúdo do buffer de rastreamento e, seletivamente, exibir as informações que você precisar.
Para criar um rastreamento personalizado, manipule o evento TraceFinished do objeto Trace.No manipulador de eventos, você pode ler o buffer de rastreamento.
Para criar uma saída de rastreamento personalizada
Na página com a qual você vem trabalhando, adicione o seguinte código realçado ao manipulador Page_Load:
Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load If Not Request.Cookies("username") Is Nothing Then labelName.Text = Request.Cookies("username").Value End If AddHandler Trace.TraceFinished, AddressOf Me.TraceFinished If IsPostBack Then Trace.Write("debugging", "Page_Load (Postback)") Else Trace.Write("debugging", "Page_Load (First Time)") End If End Sub
void Page_Load(object sender, EventArgs e) { if(Request.Cookies["username"].Value != null) { labelName.Text = Request.Cookies["username"].Value; } Trace.TraceFinished += new TraceContextEventHandler(this.TraceFinished); if (Page.IsPostBack) { Trace.Write("debugging", "Page load (postback)"); } else { Trace.Write("debugging", "Page load (first time)"); } }
O código executará as duas funções a seguir:
Vincular um método na página ao evento TraceFinished do objeto Trace, que é levantado quando a saída do rastreamento da página está concluída.Você irá escrever o método na próxima etapa.
Gravar algumas informações de rastreamento.
Crie o seguinte método para manipular o evento TraceFinished:
Sub TraceFinished(ByVal sender As Object, _ ByVal e As TraceContextEventArgs) Dim traceRecord As TraceContextRecord For Each traceRecord In e.TraceRecords If traceRecord.Category = "debugging" Then Response.Write("<BR>" & traceRecord.Message) End If Next End Sub
void TraceFinished(object sender, TraceContextEventArgs e) { foreach(TraceContextRecord traceRecord in e.TraceRecords) { if(traceRecord.Category == "debugging") { Response.Write("<br>" + traceRecord.Message); } } }
Esse código é executado quando a saída de rastreamento for concluída.O buffer de rastreamento está disponível como uma coleção na propriedade TraceRecords do argumento e do evento.O código realiza loops pela coleção e exibe o valor de qualquer registro de rastreamento que tenha debugging como sua categoria; nessa explicação passo a passo, você definiu a categoria de toda saída de rastreamento personalizada para debugging.
Nesse ponto do passo a passo, o site está configurado para ativar o rastreamento para todas as páginas, mas saída do rastreamento está direcionada para um visualizador de rastreamento e não para a página.Se o site estiver configurado de forma diferente — por exemplo, se saída do rastreamento for exibida na página — siga as etapas no procedimento chamado Para habilitar rastreamento de aplicativo, em "Exibindo Informações de Rastreamento em um Visualizador de Rastreamento", anteriormente no passo a passo.
Agora você pode testar a saída de rastreamento personalizada.
Para testar a saída de rastreamento personalizada
Pressione CTRL+F5 para executar a página.
Quando a página é exibida no navegador, a mensagem Page load (first time) aparecerá, mas nenhuma outra saída do rastreamento irá aparecer.
Clique em Submit.
Aparecerão as mensagens Page load (postback), Start buttonDisplayName Click handler e End buttonDisplayName Click handler.
Observação: |
---|
Se você exceder o número de solicitação em cache que é especificado no atributo requestLimit de Rastrear elemento (esquema configurações ASP.NET), o evento TraceFinished não será gerado e você não verá as mensagens sobre a página da Web. |
Próximas etapas
Esta explicação passo a passo ilustrou a funcionalidade básica de rastreamento no ASP.NET.Além de usar o rastreamento para exibir informações dentro do aplicativo Web Web, você pode integrar o rastreamento ASP.NET com Outros instrumentação.Por exemplo, você pode querer fazer o seguinte:
Exibir mensagens de diagnósticos do sistema como parte do seu rastreamento do ASP.NET.
Para obter mais informações, consulte Demonstra Passo a passo: Integrando Rastreamento ASP.NET com rastreamento sistema.Diagnóstico.
Enviar informações de rastreamento do ASP.NET para mecanismo de rastreamento do.NET Framework, que usa classes do namespace System.Diagnostics.
Encaminhar informações para ouvintes de instrumentação registrados como parte monitoramento de integridade do site.
Para obter mais informações sobre como registrar ouvintes, consulte < ouvintes > Elemento para < Rastrear >.