Gewusst wie: Beispiel für das Implementieren eines benutzerdefinierten Systemüberwachungsanbieters
Aktualisiert: November 2007
Das Beispiel aus dem Thema Beispiel für einen benutzerdefinierten ASP.NET-Systemüberwachungsanbieter zeigt, wie Sie einen benutzerdefinierten Anbieter erstellen, der ASP.NET-Systemereignisse verarbeitet. Das Codebeispiel zeigt, wie Sie von der BufferedWebEventProvider-Klasse ableiten, um einen benutzerdefinierten Anbieter zu erstellen, der Ereignisinformationen in eine lokale Datei schreibt.
Das Beispiel ist bewusst einfach gehalten. Sie sollen dabei volle Kontrolle über die grundlegenden Mechanismen des benutzerdefinierten Anbieters haben. Um besser zu verstehen, welche Informationen von der ASP.NET-Systemüberwachung bereitgestellt werden, können Sie mit dem Beispielcode das Verhalten einer Anwendung vorab untersuchen.
Anhand des Beispielanbieters werden folgende Features veranschaulicht:
Erstellen eines benutzerdefinierten Anbieters durch Erben vom BufferedWebEventProvider. Dieser Anbieter verfügt über die Fähigkeit, Ereignisinformationen auf der Grundlage verschiedener Faktoren (wie ein angegebenes Zeitintervall) aufzunehmen, bevor sie protokolliert werden.
Konfigurieren eines benutzerdefinierten Anbieters.
Herstellen einer Schnittstellenverbindung zur Windows-Ereignisanzeige.
Für die Ausführung des Beispiels benötigen Sie Folgendes:
Internetinformationsdienste (IIS) muss auf dem Server installiert sein, auf dem die Webanwendung ausgeführt wird. Weitere Informationen finden Sie unter Gewusst wie: Erstellen und Konfigurieren von virtuellen Verzeichnissen in IIS 5.0 und 6.0, oder suchen Sie nach "Internetinformationsdienste" unter https://www.microsoft.com/germany.
Eine ASP.NET-Webanwendung.
So erstellen Sie den benutzerdefinierten Ereignisanbieter
Kompilieren Sie den benutzerdefinierten Ereignisanbieter als Bibliothek, und legen Sie die Bibliothek im Verzeichnis Bin der ASP.NET-Anwendung ab. Sie können die Assembly auch stark benennen und im globalen Assemblycache (GAC) ablegen.
Das folgende Befehlsbeispiel zeigt, wie Sie das Beispiel mit dem Befehlszeilencompiler kompilieren können.
vbc /out:<example_name>.dll /t:library <example_name>.vb /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
csc /out:<example_name>.dll /t:library <example_name>.cs /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
Hinweis: Wenn Sie den Compilerbefehl nicht ausführen können, müssen Sie vor dem Ausführen des Befehls den .NET Framework-Installationspfad zur PATH-Variablen von Windows hinzufügen. Klicken Sie dazu in Windows mit der rechten Maustaste auf Arbeitsplatz. Klicken Sie auf Eigenschaften, dann auf die Registerkarte Erweitert und anschließend auf die Schaltfläche Umgebungsvariablen. Doppelklicken Sie in der Liste Systemvariablen auf die Path-Variable. Geben Sie im Textfeld Variablenwert hinter den im Textfeld vorhandenen Werten ein Semikolon (;) und anschließend den Pfad der .NET Framework-Installation ein. .NET Framework wird in der Regel im Windows-Installationsordner unter \Microsoft.NET\Framework\Versionsnummer installiert.
So konfigurieren Sie die Anwendung für die Verwendung des Beispiels
Wenn sich im Stammordner der Anwendung bereits eine Datei mit dem Namen Web.config befindet, öffnen Sie sie. Erstellen Sie andernfalls eine Textdatei mit dem Namen Web.config, und fügen Sie den folgenden Text ein.
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
Fügen Sie zwischen den system.web-Tags das folgende healthMonitoring-Element ein.
<healthMonitoring heartBeatInterval="0" enabled="true"> <bufferModes> <add name="Custom Notification" maxBufferSize="10" maxFlushSize="5" urgentFlushThreshold="2" regularFlushInterval="Infinite" urgentFlushInterval="00:00:30" /> </bufferModes> <providers> <add name="SampleEventProvider" type="Samples.AspNet.Management.SampleBufferedEventProvider" buffer="true" bufferMode="Custom Notification" /> </providers> <profiles> <add name="Custom" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> </profiles> <rules> <add name="Custom Event Provider" eventName="All Events" provider="SampleEventProvider" profile="Custom" /> </rules> </healthMonitoring>
Die Einstellungen im healthMonitoring-Element verwenden ein providers-Element, um den benutzerdefinierten Anbieter hinzuzufügen, sowie ein profiles-Element, das (in diesem Fall) zum Schutz des Servers festlegt, wie oft ein Ereignis maximal ausgelöst werden kann. Das Beispiel enthält außerdem ein rules-Element, das einem Ereignis ein Profil und einen Anbieter zuordnet.
Das type-Attribut kann entweder nur den Klassennamen (wie im vorherigen Codebeispiel) oder den vollqualifizierten Typ aufführen:
type="Samples.AspNet.Management.SampleWebRequestEvent, Sample.SampleCustomEventProvider,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx"
Hinweis: Der vollqualifizierte Name ist nur erforderlich, wenn die Klasse im GAC oder im Verzeichnis Bin installiert wurde.
So testen Sie das benutzerdefinierte Webereignis
Fordern Sie im Browser eine beliebige Seite der Webanwendung an.
Indem Sie eine beliebige Seite der Anwendung ausführen, wird das benutzerdefinierte Ereignis ausgelöst.
Um die Informationen zum benutzerdefinierten Ereignis anzuzeigen, öffnen Sie die in der logFilePath-Variable im Code angegebene Protokolldatei.
Siehe auch
Konzepte
Beispiel für einen benutzerdefinierten ASP.NET-Systemüberwachungsanbieter
Übersicht über die ASP.NET-Systemüberwachung
Referenz
healthMonitoring-Element (ASP.NET-Einstellungsschema)