Sie sind hier: Wissen | ASP.NET / Tracing

Ablaufverfolgung (Tracing)

Während der Entwicklung, insbesondere bei der Durchführung von Tests, ist es oftmals notwendig, neben den üblichen Ausgaben der Anwendung, Zusatzinformationen über den genauen Verarbeitungsprozess zu erhalten, um diesen genau verfolgen und kontrollieren zu können. Man spricht in diesem Zusammenhang von Ablaufverfolgung (engl. Tracing). Mittels Tracing lassen sich an unterschiedlichen Stellen zusätzliche Informationen über den eigentlichen Verarbeitungsprozess generieren und für eine spätere Auswertung verwenden.

Microsoft verwendet in diesem Fall eine uneinheitliche Nomenklatur: ASP.NET spricht bei seinen Ausgaben von "Überwachung", in der Originaldokumentation heißt es "Ablaufverfolgung".

ASP.NET unterstützt Tracing in zwei unterschiedlichen Formen. Einerseits ist es möglich, für einzelne Webseiten Zusatzinformationen ausgeben oder andererseits auch für die gesamte Anwendung gebündelt. Darüber hinaus ist es möglich, diesen Mechanismus zu erweitern und eigene Implementierungen einzusetzen.

Ablaufverfolgung von Webformularen

Das Aktivieren der Ablaufverfolgung eines Webformulars lässt sich direkt innerhalb eines Webformulars oder der Web.config realisieren. Über die @Page-Direktive eines Webformulars kann das Überwachen direkt für eine bestimmte Webseite aktiviert werden.

<@ Page Language="vb" … trace="true" TraceMode="SortByCategory" %>

Dadurch wird, ohne Neukompilierung der Anwendung, der nächste Aufruf des Webform mit ausführlichen Zusatzinformationen versehen. Über das Attribut TraceMode lässt sich die Ausgabe zusätzlich nach Zeit bzw. Kategorie sortieren (SortByTime oder SortByCategory).

Abbildung 22:
Webform mit aktiviertem
Tracing

Innerhalb dieser Tracing-Ausgabe befinden sich Informationen über die eigentliche Anfrage (Sitzungs-ID, Anforderungszeitpunkt und Anforderungstyp, Anforderungs- und Antwortcodierung). Darüber hinaus werden alle eingetretenen Ereignisse angezeigt die im Verarbeitungsprozess des Webforms eingetreten sind. Darin aufgeführt werden auch alle Ereignisse für enthaltene Steuerelemente wie z.B. von TextBox- oder Button-Steuerelement. Ebenfalls sind dort Informationen über empfangene Cookies und alle Session-Variablen enthalten. Zusätzlich werden für alle enthaltenen Steuerelemente Informationen über die eigenen Größe und des View State ausgegeben.

Erstellen eigener Ablaufverfolgungsausgaben

Um eigene Tracing-Ausgaben den bereits vorhandenen hinzuzufügen, stehen einige einfache Methoden zur Verfügung. Jedes Webform bietet über das Attribut Page.Trace eine Instanz der Klasse System.Web.TraceContext an. Die Klasse TraceContext  bietet die Methoden Trace() und Warn().

Trace.Write("Dies ist eine Information.")

Trace.Warn("Es ist ein Fehler aufgetreten: " + exception.Message)

Zusätzlich kann man bei diesen Methoden eine eigene Kategorie angeben und eine eventuell aufgetretene Ausnahmebedingung (Exception) übergeben. Dadurch werden zusätzliche Informationen automatisch mit ausgegeben.

Abbildung 23:
Benutzerdefinierte Ausgaben in Tracing-Ausgabe

Die Beispiele finden sich auf der CD-ROM unter ì /Kapitel5/Tracing.

Ablaufverfolgung auf Anwendungsebene

Um nicht nur eine einziges Webformular mittels Tracing zu untersuchen, sondern die gesamte Anwendung, kann man eine umfassendere Tracing-Methode aktivieren.

<system.web>

  <trace enabled="true"

         requestLimit="100"

         pageOutput="true"

         traceMode="SortByTime"

         localOnly="true" />

</system.web>

An dieser Stelle kann auch zentral das Tracing von allen Webformularen aktiviert und deaktiviert werden, ohne dies mittels der @Page-Direktive in jedem Formular manuell zu tun.

Tabelle 15:
Attribut des <trace>-Elements

Attribut

Beschreibung

enabled

Aktiviert oder deaktiviert das anwendungsweite Tracing.

Mögliche Werte: true oder false.

requestLimit

Anzahl der Anfragen die für die Tracing-Informationen auf dem Server gespeichert werden.

pageOutput

Gibt an ob auf den Webformularen ebenfalls Tracing-Informationen ausgegeben werden.

Mögliche Werte: true oder false.

traceMode

Sortierung der Ausgabe aufgetretener Ereignisse.

Mögliche Werte: SortByTime oder SortByCategory.

localOnly

Die Tracing-Ausgabe wird nur lokal ausgegeben werden.

Mögliche Werte: true oder false.

Im Gegensatz zum formularbasierten Tracing macht es keinen Sinn die Informationen für die gesamte Anwendung auf jedem Webformular anzuzeigen. Deshalb gibt es mit der Aktivierung des Tracing die Möglichkeit sich Tracing-Informationen über eine ganze Webanwendung auf einen Blick anzeigen zu lassen. Dazu gibt es eine virtuelle, d.h. nicht wirklich vorhandene Seite mit Namen trace.axd. Auf Trace.axd lassen sich alle erfassten Webforms betrachten und die Detailinformationen auslesen die auch über das Webformularbasierte-Tracing zur Verfügung stehen.

Abbildung 24:
Ansicht der trace.axd-Datei