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