Freigeben über


Exemplarische Vorgehensweise: Integrieren der ASP.NET-Ablaufverfolgung und der System.Diagnostics-Ablaufverfolgung

Aktualisiert: November 2007

In dieser exemplarischen Vorgehensweise wird erläutert, wie Sie ASP.NET-Ablaufverfolgungsmethoden mit System.Diagnostics-Ablaufverfolgungsmethoden integrieren und alle Ablaufverfolgungsmeldungen in eine einzige Ablaufverfolgungsausgabe schreiben können.

Mithilfe der Ablaufverfolgung können Sie den Ausführungsablauf der Anwendung überwachen, um Daten während des Lebenszyklus eines Web Forms an wichtigen Punkten anzuzeigen und zu ermitteln, wie die Web Forms mit verschiedenen anderen Komponenten der Anwendung interagieren. Über die Ablaufverfolgung können Sie relevante Profilerstellungsinformationen überprüfen, so z. B. an die Anwendung übergebene Parameter von HTTP-Anforderungen oder den im Ansichtszustand verfügbaren Speicher für ein bestimmtes Web Form.

Vom ASP.NET-Ablaufverfolgungsmechanismus geschriebene Meldungen werden auf ASP.NET-Webseiten und im Ablaufverfolgungs-Viewer von ASP.NET (Trace.axd) angezeigt. Im Gegensatz dazu werden Ablaufverfolgungsmeldungen mit der Trace-Klasse in die Standard-Ablaufverfolgungsausgabe von .NET Framework (i. d. R. ein Konsolenfenster) geschrieben. Damit die Interaktion zwischen Web Forms und Geschäftsobjekten besser nachverfolgt werden kann, können Sie die ASP.NET-Ablaufverfolgungsausgabe mit der System.Diagnostics-Ablaufverfolgung zusammenführen und alle Ablaufverfolgungsmeldungen in eine dieser Ausgaben leiten.

Zu den häufig vorkommenden Szenarios, in denen sowohl die ASP.NET-Ablaufverfolgung als auch Trace-Klasse verwendet werden, zählen Webseiten, die unter Verwendung von Geschäftsobjekten der mittleren Ebene mit Daten und Geschäftsregeln interagieren, sowie Seiten mit Unternehmensdiensten (z. B. Transaktionen und Warteschleifen). In diesen Situationen kommt den Geschäfts- und Unternehmenskomponenten eine Schlüsselrolle bei der erfolgreichen Ausführung der Seite zu. Das Überwachen des Ausführungsflusses in den verschiedenen Ebenen der Anwendung durch eine einheitliche Ablaufverfolgungsausgabe ist daher wünschenswert.

In dieser exemplarischen Vorgehensweise verwenden Sie die Ablaufverfolgung. Sie ändern eine Webseite und ein Geschäftsobjekt, sodass Ablaufverfolgungsmeldungen geschrieben werden können. Anschließend leiten Sie alle Meldungen in eine Ablaufverfolgungsausgabe.

In dieser exemplarischen Vorgehensweise werden u. a. folgende Aufgaben veranschaulicht:

  • Erstellen einer benutzerdefinierten Komponente, die Daten an eine Webseite zurückgeben kann. Die Komponente liest Daten aus einer XML-Datei.

  • Erstellen einer Webseite, die auf das benutzerdefinierte Geschäftsobjekt als Datenquelle verweist.

  • Aktivieren der Ablaufverfolgung für die Webseite, die auf das Geschäftsobjekt verweist.

  • Schreiben von Ablaufverfolgungsmeldungen auf der Webseite, die auf das Geschäftsobjekt verweist.

  • Schreiben von Trace-Meldungen in ein benutzerdefiniertes Geschäftsobjekt.

  • Konfigurieren einer ASP.NET-Anwendung, sodass alle Ablaufverfolgungsmeldungen in eine einzelne Ausgabe geschrieben werden.

  • Lesen der Ablaufverfolgungsausgabe.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Microsoft .NET Framework und eine vorhandene ASP.NET-Website.
Hinweis:

In dieser exemplarischen Vorgehensweise wird nicht davon ausgegangen, dass Sie einen Designer wie das Entwicklungstool Microsoft Visual Web Developer Web oder Microsoft Visual Studio verwenden.

Erstellen einer Webseite und eines Geschäftsobjekts

In dieser exemplarischen Vorgehensweise erstellen Sie die Webseite Default.aspx, ein AuthorClass-Geschäftsobjekt sowie die XML-Datendatei Authors.xml. Diese Datei ist im weiteren Verlauf der exemplarischen Vorgehensweise für die Ablaufverfolgung erforderlich.

Sie können den Quellcode kopieren und in Dateien im ASP.NET-Verzeichnis einfügen. Auf diese Weise werden das , AuthorClass-Geschäftsobjekt für die Webseite Default.aspx sowie die Datei Authors.xml erstellt.

So erstellen Sie die Webseite Default.aspx

  1. Öffnen Sie einen Text-Editor, z. B. Editor, und erstellen Sie eine neue Datei.

  2. Geben Sie folgenden Code in der Datei ein.

    <%@ 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>
    
  3. Speichern Sie die Datei im ASP.NET-Stammverzeichnis der Anwendung als Default.aspx.

Die Webseite Default.aspx verwendet für die Interaktion mit XML-Daten das AuthorClass-Geschäftsobjekt.

So erstellen Sie das AuthorClass-Geschäftsobjekt

  1. Erstellen Sie im Stammverzeichnis der Anwendung das Verzeichnis App_Code.

  2. Öffnen Sie in einem Text-Editor, z. B. Editor, eine neue Datei.

  3. Geben Sie folgenden Code in der Datei ein.

    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;
            }
        }
    }
    
  4. Speichern Sie die Datei im Verzeichnis App_Code als AuthorClass.cs (für C#) oder als AuthorClass.vb (für Microsoft Visual Basic).

Bei der von AuthorClass verwendeten Datendatei handelt es sich um Authors.xml.

So können Sie die Ablaufverfolgung aktivieren und ASP.NET-Ablaufverfolgungsmeldungen anzeigen

  1. Erstellen Sie im Stammverzeichnis der Anwendung das Verzeichnis App_Data.

  2. Öffnen Sie in einem Text-Editor, z. B. Editor, eine neue Datei.

  3. Geben Sie die folgenden XML-Daten in der Datei ein.

    Die XML-Datei enthält Schemainformationen, die die Datenbankstruktur der Daten angeben. Dies schließt auch eine Primärschlüsseleinschränkung für den Schlüssel ein.

    Hinweis:

    Geschäftskomponenten können die Daten entsprechend den jeweiligen Anforderungen der Anwendung verarbeiten. In dieser exemplarischen Vorgehensweise wird aus Gründen der Einfachheit eine XML-Datei verwendet.

    <?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>
    
  4. Speichern Sie die Datei im Verzeichnis App_Data als Authors.xml, und schließen Sie die Datei.

Hinzufügen von Ablaufverfolgungsmeldungen zu einer Webseite und einem Geschäftsobjekt

Nachdem Sie die Webseite Default.aspx, die Datendatei Authors.xml und das AuthorClass-Geschäftsobjekt erstellt haben, können Sie nun mit der Ablaufverfolgung beginnen. Aktivieren Sie jedoch vor dem Hinzufügen von Ablaufverfolgungsmeldungen zum Code die Ablaufverfolgung für die Webseite Default.aspx.

So können Sie die Ablaufverfolgung aktivieren und ASP.NET-Ablaufverfolgungsmeldungen anzeigen

  1. Öffnen Sie in einem Text-Editor, z. B. Editor, die Seite Default.aspx.

  2. Fügen Sie der @ Page-Direktive ein Trace-Attribut hinzu, und legen Sie anschließend Trace auf true fest.

    Die Deklaration aktiviert die ASP.NET-Ablaufverfolgung für die Webseite.

    Weitere Informationen finden Sie unter Gewusst wie: Aktivieren der Ablaufverfolgung für eine ASP.NET-Seite.

Die Ablaufverfolgung für die Webseite ist nun aktiviert. Wenn Sie die Webseite jetzt in einem Webbrowser anzeigen, können Sie erkennen, dass auf das GridView-Steuerelement die Ablaufverfolgungsausgabe folgt. In der zweiten Tabelle für die Ablaufverfolgung (Überwachungsinformationen) werden ausführliche Informationen zum Ausführungspfad der Webseite angezeigt.

Weitere Informationen zum Interpretieren der Ablaufverfolgungsausgabe finden Sie im Thema Lesen von ASP.NET-Ablaufverfolgungsinformationen.

Schreiben von Ablaufverfolgungsmeldungen

Wenn Sie verstehen möchten, an welcher Stelle einige der grundlegenden ASP.NET-Aktionen ausgeführt werden, z. B. die vom GridView-Steuerelement auf der Webseite Default.aspx ausgeführte Datenbindung, fügen Sie der Webseite und dem AuthorClass-Geschäftsobjekt Ablaufverfolgungsmeldungen hinzu.

So schreiben Sie Ablaufverfolgungsmeldungen in einem Web Form

  • Geben Sie auf der Webseite Default.aspx folgenden Code nach der @ Page-Direktive, jedoch vor dem <html>-Tag ein.

    <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>
    
    Hinweis:

    Je nach Programmiersprache müssen Sie u. U. noch ein Sprachattribut in der @ Page-Direktive einfügen.

Die Ablaufverfolgungsmeldungen werden in die ASP.NET-Ablaufverfolgungsausgabe geschrieben. Wenn Sie die Webseite Default.aspx erneut anzeigen, werden die Ablaufverfolgungsmeldungen im Abschnitt Überwachungsinformationen zwischen "Begin Load" und "End Load" angezeigt. "Begin Load" und "End Load" sind mit der Page_Load-Methode verknüpft.

Nun fügen Sie dem Geschäftsobjekt (AuthorClass) Ablaufverfolgungsmeldungen hinzu.

So schreiben Sie Ablaufverfolgungsmeldungen in das AuthorClass-Geschäftsobjekt

  1. Geben Sie folgenden Code im AuthorClass-Konstruktor ein.

    System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE")
    
    System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE");
    
  2. Geben Sie folgenden Code in der AuthorClass.GetAuthors-Methode ein.

    System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE")
    
    System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE");
    
    Hinweis:

    Wenn Sie die TraceContext.Write-Methode von ASP.NET verwenden, wird in der Parameterliste für die Methode die Ablaufverfolgungskategorie vor der Ablaufverfolgungsmeldung angegeben. Bei der Write-Methode der .NET Framework-Ablaufverfolgung hingegen wird die Ablaufverfolgungsmeldung der Ablaufverfolgungskategorie vorangestellt.

Das Geschäftsobjekt verfügt über die TRACE-Compileroption. Wenn Sie das Geschäftsobjekt nun kompilieren, werden die Ablaufverfolgungsmeldungen in die Systemablaufverfolgungsausgabe geschrieben. Die Ablaufverfolgungsmeldungen werden, anders als die ASP.NET-Ablaufverfolgungsmeldungen, nicht auf die Webseite Default.aspx geschrieben. Zeigen Sie zur Überprüfung die Webseite Default.aspx an, und vergewissern Sie sich, dass in der Tabelle Trace Information nur die "ASP.NET TRACE"-Meldungen wie zuvor angezeigt werden.

Im nächsten Abschnitt erfahren Sie, wie Sie eine ASP.NET-Webanwendung so konfigurieren, dass sie automatisch mit aktivierter TRACE-Option kompiliert wird und alle Ablaufverfolgungsmeldungen auf die Webseite weitergeleitet werden.

Weiterleiten der gesamten Ablaufverfolgungsausgabe zum Web Form

Wenn Sie die Trace-Meldungen aus dem AuthorClass-Geschäftsobjekt in die ASP.NET-Ablaufverfolgungsausgabe leiten, können Sie Informationen darüber anzeigen, zu welchem Zeitpunkt in der Anforderungsverarbeitung die AuthorClass erstellt und bearbeitet wird. Dadurch erhalten Sie einen ganzheitlichen Überblick über die Vorgänge innerhalb der Anwendung. Zum Weiterleiten von Trace-Meldungen auf eine ASP.NET-Webseite müssen Sie ein WebPageTraceListener-Objekt hinzufügen. Sie können den Ablaufverfolgungslistener entweder durch Konfiguration (empfohlen) oder auch programmgesteuert hinzufügen. Weitere Informationen zum Hinzufügen eines Ablaufverfolgungslisteners durch Konfiguration finden Sie unter <listeners>-Element für <trace>.

Für die nächsten Schritte ist eine Web.config-Datei erforderlich. Wenn Sie bereits eine Web.config-Datei erstellt haben, können Sie die folgende Verfahrensweise überspringen und mit dem darauf folgenden Schritt fortfahren, in dem Sie ein WebPageTraceListener-Objekt hinzufügen.

So erstellen Sie eine Web.config-Datei

  1. Öffnen Sie einen Text-Editor, z. B. Editor, und erstellen Sie eine neue Datei.

  2. Geben Sie in der Datei den folgenden Text ein.

    <!-- Web.Config Configuration File -->
    <configuration>
        <system.web>
            <customErrors mode="Off"/>
        </system.web>
    </configuration>
    
  3. Speichern Sie die Web.config-Datei im gleichen Verzeichnis wie Default.aspx.

Im nächsten Schritt fügen Sie der Anwendung ein WebPageTraceListener-Objekt hinzu, mit dessen Hilfe Trace-Meldungen in die ASP.NET-Ablaufverfolgungsausgabe weitergeleitet werden.

So fügen Sie der Anwendung einen WebPageTraceListener durch Konfiguration hinzu

  1. Öffnen Sie die Datei Web.config der Anwendung.

  2. Fügen Sie in der Datei Web.config nach dem Abschnitt <system.web> folgenden Code ein.

    <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>
    

    Mit diesem Konfigurationsabschnitt wird der Ablaufverfolgungslistener-Auflistung der Anwendung ein WebPageTraceListener-Objekt hinzugefügt.

Das Hinzufügen eines WebPageTraceListener mithilfe der Konfigurationsdatei der Anwendung stellt die empfohlene Methode für das Hinzufügen eines Ablaufverfolgungslisteners dar. Sie können den Ablaufverfolgungslistener jedoch auch programmgesteuert hinzufügen. Dieses Verfahren eignet sich insbesondere bei der Verwendung einer komplexen Ablaufverfolgungslogik und verschiedener Typen von Ablaufverfolgungslistener für das Überwachen der Anwendung. Es gibt noch zahlreiche andere Ablaufverfolgungslistener als WebPageTraceListener.

Wenn Sie der Anwendung einen Ablaufverfolgungslistener programmgesteuert hinzufügen möchten, erstellen Sie eine Global.asax-Datei, und fügen Sie den Listener mithilfe der folgenden Schritte hinzu.

So können Sie eine Global.asax-Datei erstellen und einen Ablaufverfolgungslistener programmgesteuert hinzufügen

  1. Öffnen Sie einen Text-Editor, z. B. Editor, und erstellen Sie eine neue Datei.

  2. Geben Sie folgenden Code in der Datei ein.

    <%@ 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>
    
  3. Speichern Sie die Datei im Stammverzeichnis der Anwendung als Global.asax.

    Dadurch wird eine einfache Global.asax-Datei erstellt, die einem kompilierten Modul mit Code entspricht, der immer dann ausgeführt wird, wenn eine Anwendung gestartet oder beendet wird.

  4. Geben Sie den folgenden Code in der Application_Start-Methode der Datei Global.asax ein.

    ' 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);
    

    Dadurch wird der Ablaufverfolgungslistener-Auflistung für die Anwendung programmgesteuert ein WebPageTraceListener hinzugefügt.

  5. Speichern Sie die Datei als Global.aspx im gleichen Verzeichnis wie Default.aspx.

Mit diesen Schritten haben Sie der Ablaufverfolgungslistener-Auflistung für die Anwendung einen WebPageTraceListener hinzugefügt. Obwohl ASP.NET immer dann Ablaufverfolgungsmeldungen anzeigt, wenn die Ablaufverfolgung für eine Seite aktiviert ist, werden System.Diagnostics-Ablaufverfolgungsmeldungen nur geschrieben, wenn der Code, in dem sich die Ablaufverfolgungsmeldungen befinden, mithilfe eines expliziten Compilerschalters (dem TRACE-Schalter) kompiliert. Anders gesagt, wenn Sie die AuthorClass nicht explizit mit dem TRACE-Schalter kompilieren, werden keine Ablaufverfolgungsmeldungen angezeigt. Dies gilt auch, wenn der WebPageTraceListener hinzugefügt wird.

Sie können in der Konfiguration der Anwendung die automatische Kompilierung mithilfe des TRACE-Schalters festlegen, indem Sie der Datei Web.config einen neuen Abschnitt hinzufügen.

So kompilieren Sie die Anwendung automatisch mit aktivierter Ablaufverfolgung

  1. Öffnen Sie die Datei Web.config der Anwendung.

  2. Fügen Sie in der Datei Web.config nach dem Abschnitt <system.diagnostics> folgenden Code ein.

    <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>
    

    Standardmäßig veranlasst dieser Konfigurationsabschnitt die Anwendung dazu, alle Module mit der TRACE-Option zu kompilieren.

Wenn Sie nun die Seite Default.aspx anzeigen, werden sowohl ASP.NET- als auch System.Diagnostics-Ablaufverfolgungsmeldungen angezeigt. Wenn ASP.NET- und System.Diagnostics-Ablaufverfolgungsmeldungen nicht angezeigt werden, müssen Sie möglicherweise das AuthorClass-Objekt erneut kompilieren.

Sie können anhand der Ablaufverfolgungsinformationen feststellen, dass das AuthorClass-Objekt erstellt wird und dass dessen GetAuthors-Methode während der PreRender-Methode des Webseiten-Lebenszyklus aufgerufen wird. Sie können außerdem feststellen, dass beim Erstellen des AuthorClass-Objekts eine deutliche Zeitverzögerung eintritt. Der Zeitunterschied zwischen der Meldung "Begin PreRender" und der Meldung "AuthorClass is created." ist beträchtlich. Der Grund dafür ist, dass die AuthorClass die Datei Authors.xml öffnet und das DataSet während der Erstellung initialisiert, was eine relativ zeitaufwendige Operation darstellt.

Im nächsten Abschnitt erhalten Sie Informationen dazu, wie Sie die ASP.NET-Webanwendung so konfigurieren, dass alle Ablaufverfolgungsmeldungen an die .NET Framework-Ablaufverfolgungsausgabe weitergeleitet werden.

Weiterleiten aller Ablaufverfolgungsausgaben an die .NET Framework-Ablaufverfolgung

Sie können ASP.NET-Ablaufverfolgungsmeldungen an die Standardausgabe für Trace-Meldungen weiterleiten. Dabei kann es sich um ein Konsolenfenster, einen Datenträger, das Windows-Ereignisprotokoll oder eine beliebige andere Meldungsausgabe für die Ablaufverfolgung sein. Sie können diese Meldungsweiterleitung in der Konfigurationsdatei Web.config aktivieren.

So leiten Sie alle ASP.NET-Ablaufverfolgungsmeldungen an die Ablaufverfolgungsausgabe des Systems weiter

  1. Öffnen Sie die Datei Web.config der Anwendung.

  2. Fügen Sie dem Ablaufverfolgungselement unter <system.web> ein neues Attribut hinzu (writeToDiagnosticsTrace), und legen Sie dann writeToDiagnosticsTrace auf true fest.

        <system.web>
          <trace writeToDiagnosticsTrace="true"/>
          <customErrors mode="Off"/>
        </system.web>
    

    Dieses Konfigurationsattribut weist die ASP.NET-Ablaufverfolgung an, ASP.NET-Ablaufverfolgungsmeldungen an den Standardmechanismus der Ablaufverfolgungsausgabe weiterzuleiten.

    Um ASP.NET- und System.Diagnostics-Ablaufverfolgungsmeldungen in einem Kontext außerhalb einer ASP.NET-Seite anzuzeigen, schreiben Sie mithilfe eines TextWriterTraceListener-Objekts die Ablaufverfolgungsmeldungen in eine Datei.

    Das TextWriterTraceListener-Objekt muss für das Schreiben in eine bestimmte Datei konfiguriert sein. Dies kann mit dem initializeData-Attribut des <add>-Element für <listeners> für <trace> erfolgen.

  3. Führen Sie die gleichen Schritte aus wie beim Hinzufügen des WebPageTraceListener-Objekts in der zweiten Prozedur in "Weiterleiten der gesamten Ablaufverfolgungsausgabe zum Web Form" weiter oben in dieser exemplarischen Vorgehensweise, um der Web.config-Datei ein TextWriterTraceListener-Objekt hinzuzufügen und den TextWriterTraceListener so zu konfigurieren, dass er im Anwendungsstammverzeichnis in die Datei Asptesttrace.log schreibt.

    Vorausgesetzt, dass Sie in der Datei Global.asax keinen WebPageTraceListener programmgesteuert hinzugefügt haben, ist der Abschnitt <system.diagnostics> der Datei Web.config etwa wie folgt aufgebaut:

    <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>
    
    Hinweis:

    Das initializeData-Attribut im vorherigen Schritt verfügt über einen Platzhalterwert für das ASP.NET-Anwendungsstammverzeichnis. Wenn Sie versuchen, Ablaufverfolgungsmeldungen in eine andere Datei als das Anwendungsstammverzeichnis zu schreiben, wird möglicherweise eine Sicherheitsausnahme ausgelöst. Standardmäßig lässt ASP.NET nicht zu, dass Dateien in Speicherorte auf dem Datenträger geschrieben werden, die sich außerhalb des Anwendungsstammverzeichnisses (z. B. C:\) befinden. Zusätzlich müssen Sie möglicherweise dem Ablaufverfolgungsprotokoll Schreibberechtigungen für das ASP.NET-Workerprozesskonto gewähren.

    Standardmäßig müssen Sie den Ablaufverfolgungspuffer füllen, bevor Ablaufverfolgungsdaten in den Zielstream geschrieben werden.

  4. Um Ablaufverfolgungsdaten unmittelbar nach dem Anfordern der ASP.NET-Seite im Ablaufverfolgungsprotokoll anzuzeigen, leeren Sie den Puffer, indem Sie das autoflush-Attribut wie im vorherigen Schritt auf true festlegen.

    Der Standardwert für das autoflush-Attribut lautet false.

  5. Rufen Sie die Flush-Methode auf, um programmgesteuert Ablaufverfolgungsinformationen aus dem Puffer zu entfernen.

    Hinweis:

    Wenn Sie für das in dieser exemplarischen Vorgehensweise erstellte Geschäftsobjekt die Flush-Methode in der Page_Load-Methode aufrufen und das autoflush-Attribut false ist, zeigt das Ablaufverfolgungsprotokoll die Ablaufverfolgungsdaten an. Dies ist der Fall, weil das Geschäftsobjekt wiedergegeben wird, nachdem das Load-Seitenereignis eingetreten ist.

Nächste Schritte

In dieser exemplarische Vorgehensweise wird veranschaulicht, wie ASP.NET- und System.Diagnostics-Ablaufverfolgungsfeatures verwendet werden, um alle Ablaufverfolgungsmeldungen als eine einzelne Ausgabe weiterzuleiten. Sie können jedoch auch weitere Ablaufverfolgungslistener sowie Ausgabe- und ASP.NET-Instrumentationsfeatures testen. Beispielsweise können Sie folgende Aufgaben ausführen:

  • Hinzufügen eines EventLogTraceListener-Objekts zur Anwendung.

    Fügen Sie hierzu ein EventLogTraceListener-Objekt entweder programmgesteuert oder mithilfe der Konfigurationsdatei hinzu, die die gleiche Prozedur wie für den WebPageTraceListener verwendet. Sie können das Ereignisprotokoll öffnen, um die Ablaufverfolgungsmeldungen zu überprüfen, die die Anwendung in das Ereignisprotokoll schreibt.

  • Ändern der Geschäftskomponente für das Verwenden von Datenbankdaten anstelle einer XML-Datei. Hierfür sind keine Änderungen an den Steuerelementen für die Webseite erforderlich.

Siehe auch

Weitere Ressourcen

ASP.NET-Ablaufverfolgung

Lesen von ASP.NET-Ablaufverfolgungsinformationen

Übersicht über die ASP.NET-Ablaufverfolgung auf Anwendungsebene