Freigeben über


Schreiben von Ablaufverfolgungsmeldungen

ASP.NET enthält ein Trace-Objekt (vergleichbar mit dem Response-Objekt, dem Request-Objekt und dem Context-Objekt), mit dem Sie Debuganweisungen schreiben können, die angezeigt werden, wenn die Ablaufverfolgung für eine Seite oder für die ganze Anwendung aktiviert wird.

ASP.NET verwendet die TraceContext-Klasse, um Informationen über eine Anforderung, ihre Steuerelementhierarchie und Ablaufverfolgungsinformationen zu speichern. Die Ablaufverfolgungsinformationen umfassen einige der Phasen im Lebenszyklus einer Seitenanforderung sowie beliebige benutzerdefinierte Anweisungen, die Sie darin aufnehmen möchten. Die TraceContext-Klasse ist über die Page.Trace-Eigenschaft für Web Forms-Seiten verfügbar. Wenn Sie durch Erweitern der Control-Klasse benutzerdefinierte ASP.NET-Serversteuerelemente erstellen, können Sie unter Verwendung der Control.Context.Trace-Syntax über die Control.Context-Eigenschaft auf die TraceContext-Klasse zugreifen. Wenn Sie jedoch Ablaufverfolgungsanweisungen aus anderen Dateien außer einer Seite oder einem Steuerelement einfügen möchten, z. B. der Datei Global.asax einer Anwendung oder einer Klasse, die die IHttpHandler-Schnittstelle erweitert, müssen Sie die HttpContext.Current-Eigenschaft für den Zugriff auf die TraceContext-Klasse verwenden. Verwenden Sie in diesem Fall die HttpContext.Current.Trace-Syntax.

Die TraceContext-Klasse stellt die beiden Methoden Write und Warn bereit, mit denen Sie Anweisungen in das Ablaufverfolgungsprotokoll schreiben können. Jede Methode ist überladen und ermöglicht Ihnen die Angabe einer Ablaufverfolgungskategorie, einer Textmeldung sowie optionaler Fehlerinformationen. Der einzige Unterschied zwischen den beiden Methoden besteht darin, dass die Warn-Methode den Text in roter Schrift anzeigt.

Hinweis   Wenn Sie in einem Aufruf der Write-Methode oder Warn-Methode eine Kategorie angeben, können Sie diese Kategorie verwenden, um Ablaufverfolgungsanweisungen zu sortieren. Weitere Informationen finden Sie unter Aktivieren der Ablaufverfolgung für eine Seite und Aktivieren der Ablaufverfolgung auf Anwendungsebene.

Jede dieser Methoden ist überladen und besitzt drei Varianten. Wenn Sie beim Aufrufen von Warn oder Write nur ein Zeichenfolgenargument einschließen, behandelt ASP.NET dieses als Meldung. Wenn Sie zwei Argumente einschließen, wird das erste als Kategorie behandelt, anhand derer Sie die Meldungen in der Tabelle Überwachungsinformationen sortieren können; diese wird angezeigt, wenn die Ablaufverfolgung aktiviert ist. Das dritte Argument ist vom Typ Exception und enthält (falls vorhanden) Fehlerinformationen für die Anforderung.

Diese Ablaufverfolgungsanweisungen und die übrigen Ablaufverfolgungsinformationen werden in einem anfordernden Browser angezeigt, wenn die Ablaufverfolgung für die Seite oder für die ganze Anwendung aktiviert wird.

Hinweis   Wenn für eine Seite die Ablaufverfolgung aktiviert ist, werden die Ablaufverfolgungsinformationen in jedem Browser angezeigt, der eine Anforderung für die Seite an den Server sendet. Die Ablaufverfolgung zeigt vertrauliche Daten an, z. B. die Werte von Servervariablen, und kann daher ein Sicherheitsrisiko darstellen. Achten Sie darauf, dass die Seitenablaufverfolgung für die Seite deaktiviert wird, bevor die Anwendung auf einen Produktionsserver portiert wird. Legen Sie dazu für das Trace-Attribut den Wert false fest, oder entfernen Sie es.

Die folgende Bildschirmdarstellung zeigt benutzerdefinierte Ablaufverfolgungsanweisungen, die in der Tabelle Überwachungsinformationen ausgegeben werden, wenn die Ablaufverfolgung für eine Seite aktiviert ist. Die Warn-Methode, die dazu verwendet wird, die erste Meldung in rotem Text auszugeben, hat die Kategorie Render und den Meldungstext Text is about to render!. Die Write-Methode, die verwendet wird, um die zweite benutzerdefinierte Meldung auszugeben, gehört derselben Kategorie an und hat den Meldungstext Text finished rendering!.

Ablaufverfolgungsanweisungen in einer Seite

So schreiben Sie benutzerdefinierte Ablaufverfolgungsmeldungen aus einer Seite in das Ablaufverfolgungsprotokoll

  1. Rufen Sie im Codedeklarationsblock oder in der CodeBehind-Klasse der Seite unter Verwendung der Trace-Eigenschaft eine der TraceContext-Methoden auf.

  2. Legen Sie den optionalen category-Parameter für die Ablaufverfolgungsanweisung fest. Sie können diese Kategorie verwenden, um Ablaufverfolgungsanweisungen zu sortieren, wenn sie angezeigt werden.

  3. Legen Sie den message-Parameter für die Ablaufverfolgungsanweisung fest. Dies kann eine Zeichenfolge oder eine Methode sein.

  4. Geben Sie den optionalen errorInfo-Parameter an, der Informationen zu allen Fehlern in der Seite enthält.

    Im folgenden Beispiel für die TraceContext.Warn-Methode wird die Kategorie Render und die Ablaufverfolgungsmeldung Text is about to render definiert.

    Trace.Warn("Render", "Text is about to render.");
    [Visual Basic]
    Trace.Warn("Render", "Text is about to render.")
    

So schreiben Sie benutzerdefinierte Ablaufverfolgungsmeldungen aus einem benutzerdefinierten Serversteuerelement in das Ablaufverfolgungsprotokoll

  1. Rufen Sie im Code des Serversteuerelements unter Verwendung der Context-Eigenschaft eine der TraceContext-Methoden auf.

  2. Legen Sie den optionalen category-Parameter für die Ablaufverfolgungsanweisung fest. Sie können diese Kategorie verwenden, um Ablaufverfolgungsanweisungen zu sortieren, wenn sie angezeigt werden.

  3. Legen Sie den message-Parameter für die Ablaufverfolgungsanweisung fest.

  4. Geben Sie den optionalen errorInfo-Parameter an, der Informationen zu allen Fehlern in der Seite enthält.

    Im folgenden Beispiel wird die TraceContext.Write-Methode verwendet, um benutzerdefinierte Anweisungen in das Ablaufverfolgungsprotokoll eines Serversteuerelements zu schreiben. Die Kategorie lautet My Class und die Meldung This is a simple trace statement.

    Context.Trace.Write("My Class","This is a sample trace statement.");
    [Visual Basic]
    Context.Trace.Write("My Class","This is a sample trace statement.")
    

Unter Umständen möchten Sie Anweisungen nur dann an die Methoden Write bzw. Warn übergeben, wenn die Ablaufverfolgung aktiviert ist. Das TraceContext-Objekt verfügt über eine Boolean-Eigenschaft IsEnabled, mit deren Hilfe Sie diese Methoden bedingt aufrufen können.

So schreiben Sie Ablaufverfolgungsmeldungen nur bei aktivierter Ablaufverfolgung in das Protokoll

  • Erstellen Sie eine If-Anweisung, die überprüft, ob die Ablaufverfolgung für die Seite oder die Anwendung aktiviert ist, zu der der Code gehört, sowie eine bedingte Anweisung, die ausgeführt wird, wenn die Trace.IsEnabled-Eigenschaft true zurückgibt.

    Im folgenden Beispiel wird bestätigt, dass die Ablaufverfolgung für eine Seite aktiviert ist. Anschließend wird die Write-Methode verwendet, um eine ausgewählte Anzahl von Büchern aus einer Datenbank in die Tabelle Überwachungsinformationen zu schreiben.

    If (Trace.IsEnabled) {
        For (int i=0; i<ds.Tables["Books"].Rows.Count; i++) {
             Trace.Write("Prod",ds.Tables["Books"].Rows[i][0].ToString());
        }
    }
    [Visual Basic]
    If Trace.IsEnabled Then
        For i=0 To ds.Tables("Books").Rows.Count-1
            Trace.Write("Prod",ds.Tables("Books").Rows(i)(0).ToString())
        Next
    End If
    

Siehe auch

TraceContext-Klasse | ASP.NET-Ablaufverfolgung| Page-Klasse | HttpContext-Klasse | Aktivieren der Ablaufverfolgung auf Anwendungsebene