WebEventProvider-Klasse
Aktualisiert: November 2007
Stellt die Basisklasse für nicht gepufferte Ereignisanbieter bereit.
Assembly: System.Web (in System.Web.dll)
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] public abstract class WebEventProvider : ProviderBase
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */ /** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */ public abstract class WebEventProvider extends ProviderBase
public abstract class WebEventProvider extends ProviderBase
Mithilfe der ASP.NET-Systemüberwachung kann Produktions- und Betriebspersonal bereitgestellte Webanwendungen verwalten. Der System.Web.Management-Namespace enthält die Systemereignistypen, die für das Verpacken der Systemzustandsdaten von Anwendungen zuständig sind, sowie die für die Verarbeitung dieser Daten zuständigen Anbietertypen. Außerdem enthält er Hilfstypen für die Verwaltung von Systemereignissen.
Wenn Sie die Verarbeitung von Systemereignissen anpassen möchten, können Sie mithilfe einer Ableitung von der WebEventProvider-Klasse einen eigenen benutzerdefinierten Anbieter erstellen.
Hinweis: |
|---|
In den meisten Fällen können Sie die ASP.NET-Systemüberwachungstypen in ihrer vorliegenden Implementierung verwenden und das Systemüberwachungssystem durch Angeben von Werten im healthMonitoring-Konfigurationsabschnitt steuern. Sie können auch durch Ableitungen von den Systemüberwachungstypen eigene benutzerdefinierte Ereignisse und Anbieter erstellen. Ein Beispiel für eine Ableitung von der WebEventProvider-Klasse finden Sie in dem in diesem Thema bereitgestellten Beispiel. |
Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe einer Ableitung von der WebEventProvider-Klasse ein benutzerdefinierter Anbieter erstellt wird, der die konfigurierten Ereignisse in eine lokale Datei schreibt, für die entsprechende Zugriffsrechte erteilt werden müssen. Dieses Beispiel für einen benutzerdefinierten Anbieter ist einfach und soll Ihnen als Entwickler vor allem eine umfassende Steuerung seiner grundlegenden Mechanismus ermöglichen. Unter realen Bedingungen können Sie diesen Anbieter und insbesondere den im Beispiel unter BufferedWebEventProvider verfügbaren gepufferten Anbieter für die vorbereitende Untersuchung des Verhaltens einer Anwendung verwenden. Dies kann Ihnen in der Entwurfsphase einen Überblick über die verfügbaren Informationen verschaffen. Später können Sie diese Informationen an einen komplexeren Anbieter weiterleiten.
Im folgenden Auszug aus einer Konfigurationsdatei wird ein healthMonitoring-Konfigurationsabschnitt dargestellt, der ASP.NET die Verwendung des oben festgelegten benutzerdefinierten Anbieters zum Verarbeiten aller Systemüberwachungsereignisse ermöglicht.
<healthMonitoring
heartBeatInterval="0"
enabled="true">
<providers>
<add name="SampleWebEventProvider"
type="SamplesAspNet.SampleEventProvider,webeventprovider, Version=1.0.1773.33989, Culture=neutral, PublicKeyToken=cf85aa6c978d9dea, processorArchitecture=MSIL" />
</providers>
<rules>
<rule
name="Custom Event Provider"
eventName="All Events"
provider="SampleWebEventProvider"
profile="Default" />
</rules>
</healthMonitoring>
using System; using System.Text; using System.IO; using System.Web.Management; using System.Collections.Generic; using System.Collections.Specialized; using System.Web; namespace SamplesAspNet { // Implements a custom event provider. public class SampleEventProvider : System.Web.Management.WebEventProvider { // The local path of the file where // to store event information. private string logFilePath; // The current number of buffered messages private int msgCounter; // The max number of messages to buffere. private int maxMsgNumber; // The message buffer. private System.Collections.Generic.Queue <WebBaseEvent> msgBuffer = new Queue<WebBaseEvent>(); // Initializes the provider. public SampleEventProvider(): base() { // Initialize the local path of the file // that holds event information. logFilePath = "C:/test/log.doc"; // Clear the message buffer. msgBuffer.Clear(); // Initialize the max number of messages // to buffer. maxMsgNumber = 10; // More custom initialization goes here. } // Flush the input buffer if required. public override void Flush() { // Create a string builder to // hold the event information. StringBuilder reData = new StringBuilder(); // Store custom information. reData.Append("SampleEventProvider processing." + Environment.NewLine); reData.Append("Flush done at: {0}" + DateTime.Now.TimeOfDay.ToString() + Environment.NewLine); foreach (WebBaseEvent e in msgBuffer) { // Store event data. reData.Append(e.ToString()); } // Store the information in the specified file. StoreToFile(reData, logFilePath, FileMode.Append); // Reset the message counter. msgCounter = 0; // Clear the buffer. msgBuffer.Clear(); } // Shutdown the provider. public override void Shutdown() { Flush(); } // Process the event that has been raised. public override void ProcessEvent(WebBaseEvent raisedEvent) { if (msgCounter < maxMsgNumber) { // Buffer the event information. msgBuffer.Enqueue(raisedEvent); // Increment the message counter. msgCounter += 1; } else { // Flush the buffer. Flush(); } } // Store event information in a local file. private void StoreToFile(StringBuilder text, string filePath, FileMode mode) { int writeBlock; int startIndex; try { writeBlock = 256; startIndex = 0; // Open or create the local file // to store the event information. FileStream fs = new FileStream(filePath, mode, FileAccess.Write); // Lock the file for writing. fs.Lock(startIndex, writeBlock); // Create a stream writer StreamWriter writer = new StreamWriter(fs); // Set the file pointer to the current // position to keep adding data to it. // If you want to rewrite the file use // the following statement instead. // writer.BaseStream.Seek (0, SeekOrigin.Begin); writer.BaseStream.Seek(0, SeekOrigin.Current); //If the file already exists it must not // be write protected otherwise // the following write operation fails silently. writer.Write(text.ToString()); // Update the underlying file writer.Flush(); // Unlock the file for other processes. fs.Unlock(startIndex, writeBlock); // Close the stream writer and the underlying file writer.Close(); fs.Close(); } catch (Exception e) { throw new Exception( "SampleEventProvider.StoreToFile: " + e.ToString()); } } } }
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Hinweis: