WebEventProvider Třída

Definice

Poskytuje základní třídu pro zprostředkovatele událostí bez vyrovnávacích pamětí.Provides the base class for non buffered event providers.

public ref class WebEventProvider abstract : System::Configuration::Provider::ProviderBase
public abstract class WebEventProvider : System.Configuration.Provider.ProviderBase
type WebEventProvider = class
    inherit ProviderBase
Public MustInherit Class WebEventProvider
Inherits ProviderBase
Dědičnost
WebEventProvider
Odvozené

Příklady

Následující příklad kódu ukazuje, jak odvodit z WebEventProvider třídy a vytvořit vlastního zprostředkovatele, který zapíše nakonfigurované události do místního souboru, pro který musí být udělena příslušná přístupová práva.The following code example shows how to derive from the WebEventProvider class to create a custom provider that writes the configured events to a local file for which appropriate access rights must be granted. Tento vlastní příklad poskytovatele je jednoduchý a jeho hlavním záměrem je poskytnout vývojářům úplné řízení jeho základních mechanismů.This custom provider example is simple and its main intent is to give you as developer full control of its basic mechanisms. Ve scénáři reálného světa můžete tohoto poskytovatele použít a zejména v příkladu, který je k dispozici ve vyrovnávací paměti BufferedWebEventProvider , v rámci předběžného testu do chování aplikace.In a real-world scenario, you could use this provider and especially the example buffered provider available at BufferedWebEventProvider, as a preliminary probe into the behavior of an application. To vám může pomáhat během fáze návrhu, aby získala informace o dostupných informacích. později můžete tyto informace směrovat na složitějšího poskytovatele.This can help you during the design stage to gain an understanding of the information available; then later you can direct this information to a more complex provider.

Následující úryvek konfiguračního souboru ukazuje healthMonitoring konfiguraci oddílu, která umožňuje ASP.NET použít vlastního zprostředkovatele definovaného výše ke zpracování všech událostí monitorování stavu.The following configuration file excerpt shows a healthMonitoring section configuration that enables ASP.NET to use the custom provider defined above to process all health-monitoring events.

<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());
            }
        }
    }
}

Imports System.Text
Imports System.IO
Imports System.Web.Management
Imports System.Collections.Generic
Imports System.Collections.Specialized
Imports System.Web



' Implements a custom event provider.

Public Class SampleEventProvider
    Inherits System.Web.Management.WebEventProvider
    
    ' The local path of the file where
    ' to store event information.
    Private logFilePath As String
    
    ' The current number of buffered messages 
    Private msgCounter As Integer
    
    ' The max number of messages to buffere.
    Private maxMsgNumber As Integer
    
    ' The message buffer.
    '  private System.Collections.Generic.Queue
    Private msgBuffer _
    As System.Collections.Generic.Queue( _
    Of System.Web.Management.WebBaseEvent) = _
    New System.Collections.Generic.Queue( _
    Of System.Web.Management.WebBaseEvent)


    ' Initializes the provider.
    Public Sub New() 
        
        ' 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
    
    End Sub
     
    ' More custom initialization goes here.
    
    ' Flush the input buffer if required.
    Public Overrides Sub Flush() 
        ' Create a string builder to 
        ' hold the event information.
        Dim reData As New StringBuilder()
        
        ' Store custom information.
        reData.Append( _
        "SampleEventProvider processing." + _
        Environment.NewLine)

        reData.Append( _
        "Flush done at: {0}" + _
        DateTime.Now.TimeOfDay.ToString() + _
        Environment.NewLine)
        
        Dim e As WebBaseEvent
        For Each e In  msgBuffer
            ' Store event data.
            reData.Append(e.ToString())
        Next e
        
        ' Store the information in the specified file.
        StoreToFile(reData, logFilePath, FileMode.Append)
        
        ' Reset the message counter.
        msgCounter = 0
        
        ' Clear the buffer.
        msgBuffer.Clear()
    
    End Sub
     
    ' Shutdown the provider.
    Public Overrides Sub Shutdown() 
        Flush()
    
    End Sub
    
    ' Process the event that has been raised.
    Public Overrides Sub ProcessEvent( _
    ByVal raisedEvent As WebBaseEvent)

        If msgCounter < maxMsgNumber Then
            ' Buffer the event information.
            msgBuffer.Enqueue(raisedEvent)
            ' Increment the message counter.
            msgCounter += 1
        Else
            ' Flush the buffer.
            Flush()
        End If

    End Sub
    
    
    ' Store event information in a local file.
    Private Sub StoreToFile( _
    ByVal [text] As StringBuilder, _
    ByVal filePath As String, _
    ByVal mode As FileMode)
        Dim writeBlock As Integer
        Dim startIndex As Integer

        Try

            writeBlock = 256
            startIndex = 0

            ' Open or create the local file 
            ' to store the event information.
            Dim fs As New FileStream( _
            filePath, mode, FileAccess.Write)

            ' Lock the file for writing.
            fs.Lock(startIndex, writeBlock)

            ' Create a stream writer
            Dim writer As 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 e As Exception
            Throw New Exception( _
            "SampleEventProvider.StoreToFile: " + _
            e.ToString())
        End Try

    End Sub
End Class


Poznámky

ASP.NET Health monitor umožňuje provozním a provozním pracovníkům spravovat nasazené webové aplikace.ASP.NET health monitoring allows production and operations staff to manage deployed Web applications. System.Web.ManagementObor názvů obsahuje typy událostí stavu, které jsou zodpovědné za balení stavu aplikace – data stavu a typů poskytovatelů zodpovědných za zpracování těchto dat.The System.Web.Management namespace contains the health event types responsible for packaging application health-status data and the provider types responsible for processing this data. Obsahuje také podporu typů, které vám pomůžou při správě událostí stavu.It also contains supporting types that help during the management of health events.

Pokud chcete přizpůsobit zpracování událostí stavu, můžete odvodit z WebEventProvider třídy a vytvořit tak vlastního poskytovatele.If you want to customize the health-event processing, you can derive from the WebEventProvider class to create your own custom provider.

Poznámka

Ve většině případů budete moci používat typy monitorování stavu ASP.NET, jak je implementováno, a systém monitorování stavu, a to zadáním hodnot v healthMonitoring konfiguračním oddílu.In most cases you will be able to use the ASP.NET health-monitoring types as implemented, and you will control the health-monitoring system by specifying values in the healthMonitoring configuration section. Můžete také odvozovat z typů monitorování stavu a vytvořit vlastní události a poskytovatele.You can also derive from the health-monitoring types to create your own custom events and providers. Příklad odvození z WebEventProvider třídy naleznete v příkladu, který je uveden v tomto tématu.For an example of deriving from the WebEventProvider class, see the example provided in this topic.

Konstruktory

WebEventProvider()

Inicializuje novou instanci WebEventProvider třídy.Initializes a new instance of the WebEventProvider class.

Vlastnosti

Description

Načte stručný a popisný popis vhodný k zobrazení v nástrojích pro správu nebo jiných uživatelských rozhraních (uživatelská rozhraní).Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Zděděno od ProviderBase)
Name

Získá popisný název, který se použije k odkazování na zprostředkovatele během konfigurace.Gets the friendly name used to refer to the provider during configuration.

(Zděděno od ProviderBase)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Zděděno od Object)
Flush()

Přesune události z vyrovnávací paměti poskytovatele do protokolu událostí.Moves the events from the provider's buffer into the event log.

GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Zděděno od Object)
GetType()

Získá Type aktuální instanci.Gets the Type of the current instance.

(Zděděno od Object)
Initialize(String, NameValueCollection)

Inicializuje nástroj Configuration Builder.Initializes the configuration builder.

(Zděděno od ProviderBase)
MemberwiseClone()

Vytvoří kopii aktuálního seznamu Object .Creates a shallow copy of the current Object.

(Zděděno od Object)
ProcessEvent(WebBaseEvent)

Zpracuje událost předanou zprostředkovateli.Processes the event passed to the provider.

Shutdown()

Provede úlohy přidružené k vypínání poskytovatele.Performs tasks associated with shutting down the provider.

ToString()

Vrátí řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)

Platí pro

Viz také