WebEventProvider Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece a classe base para provedores de eventos que não estão em buffer.
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
- Herança
- Derivado
Exemplos
O exemplo de código a seguir mostra como derivar da WebEventProvider classe para criar um provedor personalizado que grava os eventos configurados em um arquivo local para o qual os direitos de acesso apropriados devem ser concedidos. Este exemplo de provedor personalizado é simples e sua principal intenção é fornecer a você como desenvolvedor controle total de seus mecanismos básicos. Em um cenário do mundo real, você pode usar esse provedor e, especialmente, o provedor em buffer de exemplo disponível em BufferedWebEventProvider, como uma investigação preliminar sobre o comportamento de um aplicativo. Isso pode ajudá-lo durante a fase de design a entender as informações disponíveis; posteriormente, você pode direcionar essas informações para um provedor mais complexo.
O trecho do arquivo de configuração a seguir mostra uma healthMonitoring
configuração de seção que permite que ASP.NET usem o provedor personalizado definido acima para processar todos os eventos de monitoramento de integridade.
<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
Comentários
ASP.NET monitoramento de integridade permite que a equipe de produção e operações gerencie aplicativos Web implantados. O System.Web.Management namespace contém os tipos de eventos de integridade responsáveis por empacotar dados de status de integridade do aplicativo e os tipos de provedor responsáveis por processar esses dados. Ele também contém tipos de suporte que ajudam durante o gerenciamento de eventos de integridade.
Se você quiser personalizar o processamento de eventos de integridade, poderá derivar da WebEventProvider classe para criar seu próprio provedor personalizado.
Observação
Na maioria dos casos, você poderá usar o ASP.NET tipos de monitoramento de integridade conforme implementado e controlará o sistema de monitoramento de integridade especificando valores na healthMonitoring
seção de configuração. Você também pode derivar dos tipos de monitoramento de integridade para criar seus próprios provedores e eventos personalizados. Para obter um exemplo de derivação da WebEventProvider classe , consulte o exemplo fornecido neste tópico.
Construtores
WebEventProvider() |
Inicializa uma nova instância da classe WebEventProvider. |
Propriedades
Description |
Obtém uma breve descrição amigável adequada para exibição em ferramentas administrativas ou outras IUs (interfaces do usuário). (Herdado de ProviderBase) |
Name |
Obtém o nome amigável usado para referir-se ao provedor durante a configuração. (Herdado de ProviderBase) |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Flush() |
Move os eventos do buffer do provedor para o log de eventos. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
Initialize(String, NameValueCollection) |
Inicializa o construtor de configuração. (Herdado de ProviderBase) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ProcessEvent(WebBaseEvent) |
Processa o evento passado para o provedor. |
Shutdown() |
Executa tarefas associadas ao desligamento do provedor. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |