BufferedWebEventProvider Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan fungsionalitas dasar untuk membuat penyedia peristiwa yang memerlukan buffering.
public ref class BufferedWebEventProvider abstract : System::Web::Management::WebEventProvider
public abstract class BufferedWebEventProvider : System.Web.Management.WebEventProvider
type BufferedWebEventProvider = class
inherit WebEventProvider
Public MustInherit Class BufferedWebEventProvider
Inherits WebEventProvider
- Warisan
- Turunan
Contoh
Contoh kode berikut menunjukkan cara memperoleh dari BufferedWebEventProvider kelas untuk membuat penyedia kustom yang menulis peristiwa yang dikonfigurasi ke file lokal yang hak aksesnya sesuai harus diberikan.
using System;
using System.Text;
using System.IO;
using System.Web.Management;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Web;
namespace Samples.AspNet.Management
{
// Implements a custom event provider.
public class SampleBufferedWebEventProvider :
BufferedWebEventProvider
{
// The local path of the file where
// to store event information.
private string logFilePath = string.Empty;
// Holds custom information.
private StringBuilder customInfo;
private FileStream fs;
private string providerName,
buffer, bufferModality;
public SampleBufferedWebEventProvider()
{
// Perform local initializations.
// Path of local file where to store
// event info.
// Assure that the path works for you and
// that the right permissions are set.
logFilePath = "C:/test/log.doc";
// Instantiate buffer to contain
// local data.
customInfo = new StringBuilder();
}
public override void Flush()
{
customInfo.AppendLine("Perform custom flush");
StoreToFile(customInfo, logFilePath, FileMode.Append);
}
// Initializes the provider.
public override void Initialize(string name,
NameValueCollection config)
{
base.Initialize(name, config);
// Get the configuration information.
providerName = name;
buffer = SampleUseBuffering.ToString();
bufferModality = SampleBufferMode;
customInfo.AppendLine(string.Format(
"Provider name: {0}", providerName));
customInfo.AppendLine(string.Format(
"Buffering: {0}", buffer));
customInfo.AppendLine(string.Format(
"Buffering modality: {0}", bufferModality));
}
public bool SampleUseBuffering
{
get { return UseBuffering; }
}
public string SampleBufferMode
{
get { return BufferMode; }
}
// Processes the incoming events.
// This method performs custom processing and,
// if buffering is enabled, it calls the
// base.ProcessEvent to buffer the event
// information.
public override void ProcessEvent(
WebBaseEvent eventRaised)
{
if (UseBuffering)
{
// Buffering enabled, call the
// base event to buffer event information.
base.ProcessEvent(eventRaised);
}
else
{
// Buffering disabled, store the
// current event now.
customInfo.AppendLine(
"*** Buffering disabled ***");
customInfo.AppendLine(
eventRaised.ToString());
// Store the information in the specified file.
StoreToFile(customInfo,
logFilePath, FileMode.Append);
}
}
private WebBaseEventCollection GetEvents(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.Events;
}
private int GetEventsDiscardedSinceLastNotification(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.EventsDiscardedSinceLastNotification;
}
private int GetEventsInBuffer(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.EventsInBuffer;
}
private DateTime GetLastNotificationTime(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.LastNotificationUtc;
}
private int GetNotificationSequence(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.NotificationSequence;
}
private EventNotificationType GetNotificationType(
WebEventBufferFlushInfo flushInfo)
{
return flushInfo.NotificationType;
}
// Processes the messages that have been buffered.
// It is called by the ASP.NET when the flushing of
// the buffer is required.
public override void ProcessEventFlush(
WebEventBufferFlushInfo flushInfo)
{
// Customize event information to be sent to
// the Windows Event Viewer Application Log.
customInfo.AppendLine(
"SampleEventLogWebEventProvider buffer flush.");
customInfo.AppendLine(
string.Format("NotificationType: {0}",
GetNotificationType(flushInfo)));
customInfo.AppendLine(
string.Format("EventsInBuffer: {0}",
GetEventsInBuffer(flushInfo)));
customInfo.AppendLine(
string.Format(
"EventsDiscardedSinceLastNotification: {0}",
GetEventsDiscardedSinceLastNotification(flushInfo)));
// Read each buffered event and send it to the
// Application Log.
foreach (WebBaseEvent eventRaised in flushInfo.Events)
customInfo.AppendLine(eventRaised.ToString());
// Store the information in the specified file.
StoreToFile(customInfo, logFilePath, FileMode.Append);
}
// Performs standard shutdown.
public override void Shutdown()
{
// Here you need the code that performs
// those tasks required before shutting
// down the provider.
// Flush the buffer, if needed.
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.
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)
{
// Use this for debugging.
// Never dispaly it!
string ex = e.ToString();
throw new Exception(
"[SampleEventProvider] StoreToFile: exception." );
}
}
}
}
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 SampleBufferedWebEventProvider
Inherits BufferedWebEventProvider
' The local path of the file where
' to store event information.
Private logFilePath As String = String.Empty
' Holds custom information.
Private customInfo As StringBuilder
Private fs As FileStream
Private providerName, buffer, bufferModality As String
Public Sub New()
' Perform local initializations.
' Path of local file where to store
' event info.
' Assure that the path works for you and
' that the right permissions are set.
logFilePath = "C:/test/log.doc"
' Instantiate buffer to contain
' local data.
customInfo = New StringBuilder()
End Sub
Public Overrides Sub Flush()
customInfo.AppendLine("Perform custom flush")
StoreToFile(customInfo, _
logFilePath, FileMode.Append)
End Sub
' Initializes the provider.
Public Overrides Sub Initialize(ByVal name As String, _
ByVal config As NameValueCollection)
MyBase.Initialize(name, config)
' Get the configuration information.
providerName = name
buffer = SampleUseBuffering.ToString()
bufferModality = SampleBufferMode
customInfo.AppendLine(String.Format( _
"Provider name: {0}", providerName))
customInfo.AppendLine(String.Format( _
"Buffering: {0}", buffer))
customInfo.AppendLine(String.Format( _
"Buffering modality: {0}", bufferModality))
End Sub
Public ReadOnly Property SampleUseBuffering() As Boolean
Get
Return UseBuffering
End Get
End Property
Public ReadOnly Property SampleBufferMode() As String
Get
Return BufferMode
End Get
End Property
' Processes the incoming events.
' This method performs custom
' processing and, if buffering is
' enabled, it calls the base.ProcessEvent
' to buffer the event information.
Public Overrides Sub ProcessEvent( _
ByVal eventRaised As WebBaseEvent)
If UseBuffering Then
' Buffering enabled, call the base event to
' buffer event information.
MyBase.ProcessEvent(eventRaised)
Else
' Buffering disabled, store the current event
' now.
customInfo.AppendLine("*** Buffering disabled ***")
customInfo.AppendLine(eventRaised.ToString())
' Store the information in the specified file.
StoreToFile(customInfo, _
logFilePath, FileMode.Append)
End If
End Sub
Private Function GetEvents( _
ByVal flushInfo As WebEventBufferFlushInfo) _
As WebBaseEventCollection
Return flushInfo.Events
End Function 'GetEvents
Private Function GetEventsDiscardedSinceLastNotification( _
ByVal flushInfo _
As WebEventBufferFlushInfo) As Integer
Return flushInfo.EventsDiscardedSinceLastNotification
End Function 'GetEventsDiscardedSinceLastNotification
Private Function GetEventsInBuffer(ByVal flushInfo _
As WebEventBufferFlushInfo) As Integer
Return flushInfo.EventsInBuffer
End Function 'GetEventsInBuffer
Private Function GetLastNotificationTime(ByVal flushInfo _
As WebEventBufferFlushInfo) As DateTime
Return flushInfo.LastNotificationUtc
End Function 'GetLastNotificationTime
Private Function GetNotificationSequence(ByVal flushInfo _
As WebEventBufferFlushInfo) As Integer
Return flushInfo.NotificationSequence
End Function 'GetNotificationSequence
Private Function GetNotificationType(ByVal flushInfo _
As WebEventBufferFlushInfo) _
As EventNotificationType
Return flushInfo.NotificationType
End Function 'GetNotificationType
' Processes the messages that have been buffered.
' It is called by the ASP.NET when the flushing of
' the buffer is required according to the parameters
' defined in the <bufferModes> element of the
' <healthMonitoring> configuration section.
Public Overrides Sub ProcessEventFlush(ByVal flushInfo _
As WebEventBufferFlushInfo)
' Customize event information to be sent to
' the Windows Event Viewer Application Log.
customInfo.AppendLine( _
"SampleEventLogWebEventProvider buffer flush.")
customInfo.AppendLine(String.Format( _
"NotificationType: {0}", _
GetNotificationType(flushInfo)))
customInfo.AppendLine(String.Format( _
"EventsInBuffer: {0}", _
GetEventsInBuffer(flushInfo)))
customInfo.AppendLine(String.Format( _
"EventsDiscardedSinceLastNotification: {0}", _
GetEventsDiscardedSinceLastNotification( _
flushInfo)))
' Read each buffered event and send it to the
' Application Log.
Dim eventRaised As WebBaseEvent
For Each eventRaised In flushInfo.Events
customInfo.AppendLine(eventRaised.ToString())
Next eventRaised
' Store the information in the specified file.
StoreToFile(customInfo, logFilePath, _
FileMode.Append)
End Sub
' Performs standard shutdown.
Public Overrides Sub Shutdown()
' Here you need the code that performs
' those tasks required before shutting
' down the provider.
' Flush the buffer, if needed.
Flush()
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.
fs = 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
'Use this for debugging.
'Never dispaly it!
Dim ex As String = e.ToString()
Throw New Exception( _
"[SampleEventProvider] StoreToFile: exception.")
End Try
End Sub
End Class
Kutipan file konfigurasi berikut menunjukkan healthMonitoring
bagian konfigurasi yang memungkinkan ASP.NET menggunakan penyedia kustom yang ditentukan di atas untuk memproses semua peristiwa pemantauan kesehatan.
<healthMonitoring
heartBeatInterval="0" enabled="true">
<bufferModes>
<add name ="Custom Notification"
maxBufferSize="10"
maxFlushSize="5"
urgentFlushThreshold="10"
regularFlushInterval="Infinite"
urgentFlushInterval="00:00:30"
maxBufferThreads="1"
/>
</bufferModes>
<providers>
<clear/>
<add name="SampleBufferedWebEventProvider"
type="SamplesAspNet.SampleBufferedWebEventProvider, bufferedwebeventprovider, Version=1.0.1785.14700, Culture=neutral, PublicKeyToken=d31491bf33b55954, processorArchitecture=MSIL"
buffer="true"
bufferMode="Custom Notification"
/>
</providers>
<profiles>
<add name="Custom"
minInstances="1"
maxLimit="Infinite"
minInterval="00:00:00" />
</profiles>
<rules>
<clear />
<add name="Custom Buffered Web Event Provider"
eventName="All Events"
provider="SampleBufferedWebEventProvider"
profile="Custom" />
</rules>
</healthMonitoring>
Keterangan
ASP.NET pemantauan kesehatan memungkinkan staf produksi dan operasi untuk mengelola aplikasi Web yang disebarkan. Namespace System.Web.Management layanan berisi jenis peristiwa kesehatan yang bertanggung jawab untuk mengemas data status kesehatan aplikasi dan jenis penyedia yang bertanggung jawab untuk memproses data ini. Ini juga berisi jenis pendukung yang membantu selama pengelolaan peristiwa kesehatan.
Jika Anda ingin menyesuaikan pemrosesan peristiwa kesehatan, Anda dapat memperoleh dari BufferedWebEventProvider kelas untuk membuat penyedia buffer kustom Anda sendiri.
Catatan
Dalam kebanyakan kasus, Anda akan dapat menggunakan jenis pemantauan kesehatan ASP.NET seperti yang diterapkan, dan Anda akan mengontrol sistem pemantauan kesehatan dengan menentukan nilai di bagian healthMonitoring
konfigurasi. Anda juga dapat memperoleh dari jenis pemantauan kesehatan untuk membuat peristiwa dan penyedia kustom Anda sendiri. Untuk contoh pembuatan penyedia kustom, lihat Cara: Menerapkan Contoh Penyedia Kustom Pemantauan Kesehatan.
Konstruktor
BufferedWebEventProvider() |
Menginisialisasi instans baru kelas BufferedWebEventProvider. |
Properti
BufferMode |
Mendapatkan nilai yang menunjukkan mode buffering yang digunakan oleh penyedia. |
Description |
Mendapatkan deskripsi singkat dan ramah yang cocok untuk ditampilkan di alat administratif atau antarmuka pengguna (UI) lainnya. (Diperoleh dari ProviderBase) |
Name |
Mendapatkan nama ramah yang digunakan untuk merujuk ke penyedia selama konfigurasi. (Diperoleh dari ProviderBase) |
UseBuffering |
Mendapatkan nilai yang menunjukkan apakah penyedia berada dalam mode buffer. |
Metode
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Flush() |
Memindahkan peristiwa dari buffer penyedia ke log peristiwa. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
Initialize(String, NameValueCollection) |
Menyetel nilai awal untuk objek ini. |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ProcessEvent(WebBaseEvent) |
Memproses peristiwa yang diteruskan ke penyedia. |
ProcessEventFlush(WebEventBufferFlushInfo) |
Memproses peristiwa yang di-buffer. |
Shutdown() |
Melakukan tugas yang terkait dengan mematikan penyedia. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk