Ablaufverfolgung (Tracing) in ASP.NET-Webanwendungen
Angebote
Angebote
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Support
Entwicklung
Vermittlung
.NET/Visual Studio
Webprogrammierung
Windows Scripting
Konditionen
Anfrage/Kontakt
Über uns
Über uns
Referenzkunden
Holger Schwichtenberg
Team
Partner
Site Map
Tag Cloud
Impressum
Rechtliches
AGB
Schulungen
Schulungen
Überblick
Themen
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Scripting
Termine .NET
Termine PowerShell
Konferenzvortraege
Referenzkunden
Trainerprofile
Konditionen
Anfrage
Publikationen
Publikationen
Redaktionsbuero
Buecher
Fachartikel
LBW Windows 2000
LBW Windows 2003
Leser-Portal
Autoren gesucht!
Rezensionen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog Deutsch
Lexikon
Downloads
Support
Kontakt
Literaturtipps
.NET
.NET
Startseite
Einfuehrung
Lexikon
Artikel
Buecher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Mehr zu ASP.NET 1.x
Mehr zu ASP.NET 2.0
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
PowerShell
PowerShell
Ueberblick
Codebeispiele
Commandlet Extensions
Windows Server
Windows Server
Startseite
Lexikon
Forum
Komponenten
Komponenten
Startseite
Grundlagen
Lexikon
Marktuebersicht
.NET
COM/DCOM/COM+
Referenz COM
Referenz .NET
.NET-Forum

Ablaufverfolgung (Tracing) in ASP.NET-Webanwendungen

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