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