Gewusst wie: Implementieren und Auslösen von benutzerdefinierten ASP.NET-Systemüberwachungsereignissen

Aktualisiert: November 2007

Das Beispiel in diesem Abschnitt zeigt, wie benutzerdefinierte ASP.NET-Systemüberwachungsereignisse ausgelöst werden. Wenn Sie der Anwendung ein benutzerdefiniertes Ereignis hinzufügen, müssen Sie folgende Dinge beachten:

  • Wie Sie den Bereich für das Systemüberwachungsereignis festlegen. Wenn das Ereignis für alle Anwendungen auf dem Server ausgelöst werden soll, muss der gesamte Computer als Ereignisbereich festgelegt werden. Dazu erstellen Sie am besten ein HTTP-Modul (wie in diesem Beispiel gezeigt), das das benutzerdefinierte Ereignis auslöst. Installieren Sie anschließend das Modul auf Computerebene. Das Modul wird von allen Anwendungen auf dem Computer aufgerufen, auf dem es installiert ist.

  • Wann Sie ein Systemüberwachungsereignis auslösen. Sie können Systemüberwachungsereignisse jederzeit während der Anforderungsverarbeitung auslösen. Ein typischer Zeitpunkt, um ein benutzerdefiniertes WebRequestEvent auszulösen, sind das BeginRequest-Systemereignis oder das EndRequest-Systemereignis.

Dieses Beispiel demonstriert folgende Features:

  • Erstellen eines HTTP-Moduls zum Auslösen benutzerdefinierter Systemüberwachungsereignisse.

  • Konfigurieren der Anwendung zum Protokollieren von Ereignissen mit dem Standard-EventLogWebEventProvider.

  • Protokollieren von Ereignisinformationen mit dem Standard-EventLogWebEventProvider.

Für die Ausführung des Beispiels benötigen Sie Folgendes:

So erstellen Sie das HTTP-Modul

  • Fügen Sie den Quellcode aus Beispiel für das Auslösen von benutzerdefinierten Ereignissen der ASP.NET-Systemüberwachung in eine Datei mit dem Namen SampleModule.vb oder SampleModule.cs ein, und legen Sie sie im Verzeichnis App_Code der ASP.NET-Anwendung ab.

    Hinweis:

    Wenn sich bereits Quellcode im Verzeichnis App_Code der Anwendung befindet, müssen Sie eine Version des benutzerdefinierten Ereignisanbieters hinzufügen, die in derselben Sprache geschrieben ist wie der bereits vorhandene Code.

    ASP.NET kompiliert den Code des benutzerdefinierten Ereignisanbieters, wenn eine Seite der Anwendung angefordert wird. Weitere Informationen finden Sie unter Ordner für freigegebenen Code in ASP.NET-Websites.

    – oder –

  • 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 ASP.NET-Anwendung für die Verwendung des Beispiels

  1. Wenn bereits eine Datei mit dem Namen Web.config im Stammordner der ASP.NET-Anwendung vorhanden ist, öffnen Sie sie. Ansonsten erstellen Sie eine Textdatei mit dem Namen Web.config, und kopieren Sie den folgenden Text in die Datei:

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    
  2. Fügen Sie in die system.web-Tags das folgende httpModules-Element und das folgende healthMonitoring-Element (ASP.NET-Einstellungsschema)-Element ein.

    <httpModules>
      <add name="Raising Custom Web Events" 
        type="Samples.AspNet.Management.CustomWebEvents" 
      />
    </httpModules>
    <healthMonitoring 
      heartbeatInterval="0" 
      enabled="true">
      <eventMappings>
        <add name="SampleWebRequestEvent" 
          type="Samples.AspNet.Management.SampleWebRequestEvent" 
        />
      </eventMappings>
      <profiles>
        <add name="Custom" 
          minInstances="1" 
          maxLimit="Infinite" 
          minInterval="00:00:00" 
        />
      </profiles>
      <rules>
        <clear />
          <add name="Custom Web Request Event" 
            eventName="SampleWebRequestEvent"
            provider="EventLogProvider" 
            profile="Custom" 
         />
      </rules>
    </healthMonitoring>
    

    Das type-Attribut kann entweder nur den Klassennamen (wie im vorherigen Codebeispiel) oder den vollqualifizierten Typ aufführen:

    type="Samples.AspNet.Management.SampleWebRequestEvent,
    Sample.SampleModule,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. Führen Sie die Windows-Ereignisanzeige auf dem Server aus, auf dem die Webanwendung ausgeführt wird. Klicken Sie dazu im Startmenü auf Ausführen. Geben Sie in das Dialogfeld Ausführen die Zeichenfolge eventvwr ein, und klicken Sie auf OK.

  2. Klicken Sie in der Ereignisprotokollstruktur der Ereignisanzeige auf Anwendung.

  3. Aktualisieren Sie die Ansicht des Anwendungsprotokolls durch Klicken auf Aktion, und klicken Sie anschließend auf Aktualisieren.

    Notieren Sie sich Datum, Zeit und Name des letzten Ereignisses. Anhand dieser Angaben können sie später überprüfen, ob das benutzerdefinierte Ereignis ausgelöst wurde.

  4. Fordern Sie im Browser eine beliebige Seite der Webanwendung an.

    Um das benutzerdefinierte Ereignis in der Anwendung zu verwenden, führen Sie im Browser eine Seite der Anwendung aus. Sie können dann die vom benutzerdefinierten Ereignis erstellten Ergebnisse untersuchen.

  5. Aktualisieren Sie das Anwendungsprotokoll erneut, und überprüfen Sie, ob die vom benutzerdefinierten Ereignis erstellten Systemereignisinformationen protokolliert wurden.

Siehe auch

Aufgaben

Beispiel für das Auslösen von benutzerdefinierten Ereignissen der ASP.NET-Systemüberwachung

Konzepte

Übersicht über die ASP.NET-Systemüberwachung

Referenz

healthMonitoring-Element (ASP.NET-Einstellungsschema)

EventLogWebEventProvider

Weitere Ressourcen

Erweitern der ASP.NET-Verarbeitung mit HTTP-Modulen