Demonstra Passo a passo: Integrando Rastreamento ASP.NET com rastreamento sistema.Diagnóstico
Este passo a passo descreve como integrar técnicas de rastreamento do ASP.NET com técnicas de rastreamento System.Diagnostics, e gravar todas as mensagens de rastreamento em uma única saída de rastreamento.
Você pode usar o rastreamento para controlar o fluxo de execução de seu aplicativo, para exibir dados em pontos críticos durante um ciclo de vida de um formulário Web, e para descobrir como os formulários Web interagem com vários outros componentes de seu aplicativo.Usando o rastreamento, você pode examinar os parâmetros das solicitação HTTP que são enviadas para seu aplicativo, a quantidade de memória que está sendo utilizada no armazenamento do estado da exibição para um determinado formulário Web, e outras informações úteis do perfil.
O mecanismo de rastreamento no ASP.NET grava as mensagens que são exibidas nas páginas Web ASP.NET e no visualizador do rastreamento ASP.NET (Trace.axd), enquanto a classe Trace é usada para gravar as mensagens de rastreamento na saída padrão de rastreamento no .NET Framework (normalmente uma janela de console).Para tornar mais fácil o controle como os formulários da Web interagem com objetos de negócio e outros componentes, você pode integrar o rastreamento de saída do ASP.NET com rastreamento do System.Diagnostics para rotear mensagens de rastreamento para uma desses saídas.
Cenários comuns que usam ambos cenários o rastreamento do ASP.NET e o Trace inclui páginas da Web que usam camadas intermediárias de negócios para interagir com os dados e as regras de negócio, e paginas que usam serviços corporativos como transações e filas.Nessas situações, componentes de negócio e corporativos são partes chave no sucesso da execução da página e do monitoramento do fluxo de execução das páginas em várias camadas do seu aplicativo usando uma saída com rastreamento único é desejável.
Neste explicação passo a passo você trabalhará com o rastreamento.Você irá modificar uma página da Web e um objeto de negócios para escrever mensagens de rastreamento, e então rotear todas as mensagens de saída de um rastreamento.
Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:
Criando um componente de negócios personalizado que pode retornar dados em uma página da Web.O componente lê dados de um arquivo XML.
Criar uma página da Web que faz referência a objeto de negócios personalizado como uma fonte de dados.
Ativar o rastreamento para a página da Web que é referência do objeto de negócios.
Gravando mensagens de rastreamento para a página da Web que é referência do objeto de negócio.
Gravando mensagens Trace em um objeto comercial personalizado.
Configurando um aplicativo ASP.NET para gravar todas as mensagens de rastreamento em uma única saída.
Saída do rastreamento de leitura.
Pré-requisitos
A fim de concluir este explicação passo a passo, é necessário o seguinte:
- O Microsoft .NET Framework e um site da Web ASP.NET existente.
Observação: |
---|
Este explicação passo a passo não assume que você está usando um designer, como a ferramenta de desenvolvimento Microsoft Visual Web Developer Web ou Microsoft Visual Studio. |
Criar uma página da Web e um objeto de negócios
Nesta explicação passo a passo você irá criar a página Web Default.aspx, um objeto de negócios AuthorClass, e o arquivo de dados XML Authors.xml que é necessário para etapas posteriores nesta explicação passo a passo que envolve rastreamento.
Você pode copiar e colar o código-fonte em arquivos no diretório ASP.NET.Isso criará o objeto comercial , AuthorClass da página da Web Default.aspx e o arquivo Authors.xml.
Para criar a página Default.aspx
Abra um editor de texto, como o Bloco de notas, e crie um novo arquivo.
Insira o código a seguir para o arquivo.
<%@ Page Language="VB" %> <html> <form > <asp:objectdatasource id="AuthorsObjectDataSource" typename="PubsClasses.AuthorClass" selectmethod="GetAuthors"/> <asp:gridview id="GridView1" datasourceid="AuthorsObjectDataSource" /> </form> </html>
<%@ Page Language="C#" %> <html> <form > <asp:objectdatasource id="AuthorsObjectDataSource" typename="PubsClasses.AuthorClass" selectmethod="GetAuthors"/> <asp:gridview id="GridView1" datasourceid="AuthorsObjectDataSource" /> </form> </html>
Salve o arquivo no diretório raiz do aplicativo ASP.NET como Default.aspx.
A página Default.aspx usa um objeto de negócios chamado AuthorClass para interagir com os dados XML.
Para criar o objeto de negócios AuthorClass
Abaixo do diretório raiz do aplicativo, crie um Diretório chamado App_Code.
Em um editor de texto, como o Bloco de notas, abra um novo arquivo.
Insira o código a seguir para o arquivo.
Imports Microsoft.VisualBasic Imports System Imports System.Web Imports System.Data Namespace PubsClasses Public Class AuthorClass Private dsAuthors As DataSet = _ New System.Data.DataSet("ds1") Private filePath As String = _ HttpContext.Current.Server.MapPath("~/App_Data/authors.xml") Public Sub New() dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema) End Sub Public Function GetAuthors() As DataSet Return dsAuthors End Function End Class End Namespace
using System; using System.Web; using System.Data; namespace PubsClasses { public class AuthorClass { private DataSet dsAuthors = new DataSet("ds1"); private String filePath = HttpContext.Current.Server.MapPath("~/App_Data/authors.xml"); public AuthorClass() { dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema); } public DataSet GetAuthors () { return dsAuthors; } } }
No Diretório App_Code, salve o arquivo como AuthorClass.cs (para C#) ou AuthorClass.vb (para Microsoft Visual Basic).
O arquivo de dados que o AuthorClass usa é Authors.xml.
Para ativar rastreamento e exibir as mensagens de rastreamento ASP.NET
Abaixo do diretório raiz do aplicativo, crie um Diretório chamado App_Data.
Em um editor de texto, como o Bloco de notas, abra um novo arquivo.
Insira os seguintes dados XML para o arquivo.
O arquivo XML inclui informações do esquema que identifica a estrutura de banco de dados dos dados.Isso inclui uma restrição de chave primária para a chave.
Observação: Componentes de negócios podem trabalhar com dados de qualquer forma adequada para seu aplicativo.Este explicação passo a passo usa um arquivo XML para sua conveniência.
<?xml version="1.0" standalone="yes"?> <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd"> <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="dsPubs" msdata:IsDataSet="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="authors"> <xs:complexType> <xs:sequence> <xs:element name="au_id" type="xs:string" /> <xs:element name="au_lname" type="xs:string" /> <xs:element name="au_fname" type="xs:string" /> <xs:element name="au_phone" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:authors" /> <xs:field xpath="mstns:au_id" /> </xs:unique> </xs:element> </xs:schema> <authors> <au_id>172-32-1176</au_id> <au_lname>White</au_lname> <au_fname>Gerry</au_fname> <au_phone>408 496-7223</au_phone> </authors> <authors> <au_id>213-46-8915</au_id> <au_lname>Green</au_lname> <au_fname>Marjorie</au_fname> <au_phone>415 986-7020</au_phone> </authors> </dsPubs>
No Diretório App_Data, salve o arquivo como Authors.xml, e feche-o.
Adicionando mensagens de rastreamento a uma página da Web e a objetos de negócios
Quando você criar a página Default.aspx, o arquivo de dados Authors.xml, e o objeto de negócios AuthorClass, você pode iniciar o trabalho de rastreamento.Antes de adicionar as mensagens de rastreamento ao seu código, ative o rastreamento para a página Default.aspx.
Para ativar rastreamento e exibir as mensagens de rastreamento ASP.NET
Em um editor de texto, como o Bloco de notas, abra a página Default.aspx.
Adicione um atributo Trace para a diretiva @ Page e em seguida, defina Trace para true.
A declaração permite ao ASP.NET o rastreamento de páginas da Web.
Para obter mais informações, consulte Como: Habilitar o rastreamento para uma página ASP.NET.
Rastreamento de páginas está agora habilitado e quando você visualizar a página em um navegador da Web, você verá que o controle GridView é seguido pela saída de rastreamento.A segunda tabela de rastreamento exibida, Trace Information, mostra a você informações detalhadas sobre o caminho de execução da página da Web.
Para obter mais informações sobre como ler a saída de rastreamento, consulte o tópico Lendo Informações de Rastreamento do ASP.NET.
Gravando mensagens de rastreamento
Para melhor compreender onde algumas ações básicas ASP.NET ocorrerem, como de associação de dados que é executada pelo controle GridView na página Default.aspx, adicione mensagens de rastreamento ao objeto comercial AuthorClass e à página da Web.
Para gravar o rastreamento de mensagens de um formulário da Web
Na página da Web Default.aspx, insira o código a seguir após a diretiva @ Page mas antes da marca <html>.
<script > Private Sub Page_Load(sender As Object, e As EventArgs) Trace.WriteLine("ASP.NET TRACE","page_load called.") Trace.WriteLine("ASP.NET TRACE","page_load finished.") End Sub ' Page_Load </script>
<script > private void page_load(object sender, EventArgs e) { Trace.WriteLine("ASP.NET TRACE","page_load called."); Trace.WriteLine("ASP.NET TRACE","page_load finished."); } </script>
Observação: Talvez seja necessário incluir um atributo de linguagem em sua diretiva @ Page, dependendo da linguagem que você usar.
O rastreamento de mensagens são gravados na saída do rastreamento ASP.NET, e quando você visualizar a página Default.aspx novamente, você verá as mensagens de rastreamento na seção Trace Information, entre "Begin Load" e "End Load"."Begin Load" e "End Load" estão associados o método Page_Load.
Agora, você adicionará mensagens rastreamento para o objeto de negócios AuthorClass.
Para gravar o rastreamento de mensagens para o objeto de negócios AuthorClass
Insira o código a seguir para o construtor AuthorClass.
System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE")
System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE");
Digite o seguinte código no método AuthorClass.GetAuthors.
System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE")
System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE");
Observação: Quando você usar método TraceContext.Write ASP.NET, a categoria do rastreamento vem na frente da mensagem de rastreamento na lista de parâmetros para o método.No entanto, quando você usa o método Write de rastreamento .NET Framework, uma mensagem de rastreamento vem na frente da categoria de rastreamento.
Se você compila o objeto comercial que possui a opção de compilador TRACE, essas mensagens de rastreamento são gravadas na saída de rastreamento do sistema.As mensagens de rastreamento não são gravadas para a página default.aspx, como as mensagens de rastreamento do ASP.NET.Para testar isso, exiba a página default.aspx e verifique que apenas as mensagens "rastreamento ASP.NET" aparecem na tabela Rastrear informações sobre que você viu antes.
Na próxima seção, você aprenderá como configurar seu aplicativo ASP.NET a automaticamente compilar com a opção TRACE ativada e para rotear mensagens de rastreamento para a página da Web.
Roteando todas as saídas de rastreamento para o formulário da Web
Roteando as mensagens Trace contidas no objeto comercial AuthorClass para a saída de rastreamento do ASP.NET pode mostrar quando o AuthorClass é criado e manipulado durante o processamento de solicitação e lhe fornece uma exibição mais holística do que seu aplicativo está fazendo.Para rotear mensagens Trace para um página da Web ASP.NET, você deve adicionar um objeto WebPageTraceListener.Você pode adicionar um ouvinte de rastreamento por meio de configuração (recomendado) ou por meio de programação.Para obter mais informações sobre como adicionar um ouvinte de rastreamento por meio de configuração, consulte < ouvintes > Elemento para < Rastrear >.
Para o próximo procedimento, será necessário um arquivo Web.config.Se você já tiver um arquivo Web.config, ignore o próximo procedimento e vá para o seguinte, na qual você irá adicionar um objeto WebPageTraceListener.
Para criar um arquivo Web.config
Abra um editor de texto, como o Bloco de notas, e crie um novo arquivo.
Digite o seguinte texto para o arquivo.
<!-- Web.Config Configuration File --> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>
Salve o arquivo no mesmo diretório que o Default.aspx como Web.config.
Em seguida, você adicionará um objeto WebPageTraceListener ao seu aplicativo para rotear mensagens Trace para a saída de rastreamento do ASP.NET.
Para adicionar um WebPageTraceListener em seu aplicativo por configuração
Abra o arquivo Web.config em seu aplicativo.
Coloque o seguinte código no arquivo web.config após a seção <system.web>.
<system.diagnostics> <trace> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </listeners> </trace> </system.diagnostics>
Esta seção de configuração adiciona um objeto WebPageTraceListener à coleção ouvintes de rastreamento para o seu aplicativo.
Adicionar um WebPageTraceListener usando o arquivo de configuração para seu aplicativo é o método recomendado de adicionar um ouvinte de rastreamento.Entretanto, você também pode adicionar o ouvinte de rastreamento programaticamente, que é especialmente útil, se você estiver usando lógicas de rastreamento complexas e tipos diferentes de ouvintes de rastreamento para rastrear seu aplicativo, e o WebPageTraceListener é apenas um dos muitos.
Se você deseja adicionar um ouvinte de rastreamento em seu aplicativo programaticamente, crie um arquivo Global.asax e adicione o ouvinte seguindo estas etapas.
Para criar um arquivo Global.asax e adicionar um ouvinte de rastreamento programaticamente
Abra um editor de texto, como o Bloco de notas, e crie um novo arquivo.
Inserir após código no arquivo.
<%@ Application Language="VB" %> <%@ Import Namespace="System.Web" %> <script > Sub Application_Start(sender As Object, e As EventArgs) ' Code that runs when the application is started. End Sub Sub Application_End(sender As Object, e As EventArgs) ' Code that runs when the application shuts down. End Sub </script>
<%@ Application Language="C#" %> <%@ Import Namespace="System.Web" %> <script > void Application_Start(Object sender, EventArgs e) { // Code that runs when the application is started. } void Application_End(Object sender, EventArgs e) { // Code that runs when the application shuts down. } </script>
No diretório raiz de seu aplicativo, salve o arquivo como Global.asax.
Isso cria um GLOBAL.asax básico, que é um módulo compilado que contém código que é executado sempre que o aplicativo é iniciado ou interrompido.
Insira o código a seguir para o método Application_Start de seu arquivo Global.asax.
' Create a trace listener for Web forms. Dim gbTraceListener As New WebPageTraceListener() ' Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener)
// Create a trace listener for Web forms. WebPageTraceListener gbTraceListener = new WebPageTraceListener(); // Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener);
Isso adiciona programaticamente um WebPageTraceListener à coleção ouvintes de rastreamento para o seu aplicativo.
No mesmo Diretório que o Default.aspx, salve o arquivo como Global.aspx.
Com essas etapas, você adicionou um WebPageTraceListener à coleção ouvintes de rastreamento para o aplicativo.Embora o ASP.NET exiba mensagens de rastreamento sempre que o rastreamento esteja ativado para uma página, o System.Diagnostics rastreia as mensagens que apenas são gravadas quando o código no qual as mensagens de rastreamento residem é compilado, usando uma opção de compilação explícita - a opção TRACE.Em outras palavras, se você não compilar explicitamente o AuthorClass usando a opção TRACE, você não verá o rastreamento de mensagens, mesmo com o WebPageTraceListener adicionadas.
Você pode configurar seu aplicativo para compilar automaticamente usando a opção TRACE, adicionando uma nova seção ao seu arquivo Web.config.
Para compilar o aplicativo automaticamente com o rastreamento ativado
Abra o arquivo Web.config em seu aplicativo.
Coloque o seguinte código no arquivo web.config após a seção <system.diagnostics>.
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1" /> <compiler language="VB" extension=".vb" compilerOptions="/d:Trace=true" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </compilers> </system.codedom>
Por padrão, esta seção de configuração disponibiliza a compilação de seu aplicativo a todos os módulos com a opção TRACE.
Se você exibir agora a página Default.aspx, você irá ver ambos ASP.NET e o System.Diagnostics rastrearem as mensagens.Se as mensagens de rastreamento do ASP.NET e System.Diagnostics não aparecerem, talvez você precise recompilar o objeto AuthorClass.
A partir das informações de rastreamento, você pode ver que o objeto AuthorClass é criado e seu método GetAuthors é chamado durante o método PreRender de ciclo de vida de página da Web.Você também pode ver que há uma latência de tempo significativa quando o objeto AuthorClass é criado; a diferença de tempo entre a mensagem "Iniciar PreRender" e a mensagem "AuthorClass é criado." é significativa.Isso ocorre porque o AuthorClass abre o arquivo Authors.xml e inicializa sua DataSet durante a criação, que é uma operação relativamente cara.
Na próxima seção, você aprenderá como configurar sua aplicação Web ASP.NET a rotear todas mensagens de rastreamento para o rastreamento de saída do .NET Framework .
Roteando todas as saídas do rastreamento para rastreamento do .NET Framework
Convém rotear o rastreamento de mensagens ASP.NET para a saída padrão das mensagens Trace, que pode ser uma janela do console, disco, o log de eventos do Windows, ou todas as outras saídas de mensagem de rastreamento.Você pode ativar a mensagem de roteamento no arquivo de configuração Web.config.
Para rotear todas mensagens de rastreamento ASP.NET para o sistema de saída do rastreamento
Abra o arquivo Web.config em seu aplicativo.
Adicione um novo atributo, writeToDiagnosticsTrace, para o elemento de rastreamento em <system.web> e em seguida, defina writeToDiagnosticsTrace para true.
<system.web> <trace writeToDiagnosticsTrace="true"/> <customErrors mode="Off"/> </system.web>
Este atributo de configuração instrui o rastreamento ASP.NET para o roteamento das mensagens de rastreamento ASP.NET para o sistema padrão de rastreamento do mecanismo de saída.
Para exibir as mensagens de rastreamento do ASP.NET e System.Diagnostics em um contexto fora de uma página ASP.NET, use um objeto TextWriterTraceListener para gravar em um arquivo as mensagens de rastreamento.
O objeto TextWriterTraceListener deve ser configurado para gravar um arquivo específico.Você pode fazer isso usando o atributo initializeData do < adicionar > Elemento para < ouvintes > para < Rastrear >.
Use as mesmas etapas que você seguiu para adicionar o objeto WebPageTraceListener no segundo procedimento em "Routing All Tracing Output to the Web Form", anteriormente nessa explicação passo a passo, para adicionar um objeto TextWriterTraceListener em seu arquivo web.config e configurar o TextWriterTraceListener para gravar em um arquivo diretório raiz do aplicativo denominado Asptesttrace.log.
Supondo que você não adicionou uma WebPageTraceListener programaticamente no arquivo Global.asax, a seção <system.diagnostics> do arquivo web.config será similar à seguinte:
<system.diagnostics> <trace autoflush="true"> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add name="TestTracer" type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="<app root directory>\Asptesttrace.log" /> </listeners> </trace> </system.diagnostics>
Observação: O atributo initializeData na etapa anterior tem um valor de espaço reservado para o diretório raiz do aplicativo ASP.NET.Se você tentar uma gravação de rastreamento mensagens para um arquivo diferente do diretório raiz do aplicativo, você poderá receber uma exceção de segurança.Por padrão, o ASP.NET não permite gravar arquivos em locais no disco que estão fora do diretório raiz do aplicativo, como em C:\.Além disso, você talvez precise conceder permissão de gravação para o log de rastreamento para a conta de processo de operador do ASP.NET.
Por padrão, você deve aguardar para preencher o buffer de rastreamento antes dos dados de rastreamento serem gravados no fluxo de destino.
Para ver os dados do rastreamento no log de rastreamento imediatamente após a solicitação em sua página ASP.NET, libere o buffer com cada gravação do rastreamento, definindo o atributo autoflush para true como você fez na etapa anterior.
O valor padrão do atributo autoflush é false.
Para liberar o buffer de informações de rastreamento por programação, chame o método Flush.
Observação: Para o objeto comercial que você desenvolveu nesse passo a passo, se você chamar o método Flush no método Page_Load e o atributo autoflush é false, o log de rastreamento não mostrará os dados de rastreamento porque o objeto comercial é processado depois que o evento de página Load ocorre.
Próximas etapas
Esse passo a passo ilustrou como trabalhar com o ASP.NET e recursos de rastreamento System.Diagnostics para rotear todas as mensagens de rastreamento para um único resultado.Convém experimentar mais ouvintes de rastreamento e de saída e recursos de instrumentação do ASP.NET.Por exemplo, você pode querer fazer o seguinte:
Adicionar um objeto EventLogTraceListener para seu aplicativo.
Para fazer isso, você adicionaria um objeto EventLogTraceListener programaticamente ou utilizaria o arquivo de configuração que usa o mesmo procedimento que o WebPageTraceListener.Você pode abrir o log de eventos para examinar as mensagens de rastreamento que seu aplicativo grava no log de eventos.
Alterar o componente de negócio para trabalhar com dados de banco de dados em vez de com um arquivo XML.Não é preciso ter que fazer qualquer alteração nos controles na página.