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:

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

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

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

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

EventLogWebEventProvider

Weitere Ressourcen

Erstellen von ASP.NET-Websites