WebEventProvider 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 kelas dasar untuk penyedia peristiwa yang tidak di-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
- Warisan
- Turunan
Contoh
Contoh kode berikut menunjukkan cara memperoleh dari WebEventProvider kelas untuk membuat penyedia kustom yang menulis peristiwa yang dikonfigurasi ke file lokal yang hak aksesnya sesuai harus diberikan. Contoh penyedia kustom ini sederhana dan niat utamanya adalah memberi Anda sebagai pengembang kontrol penuh atas mekanisme dasarnya. Dalam skenario dunia nyata, Anda dapat menggunakan penyedia ini dan terutama contoh penyedia buffer yang tersedia di BufferedWebEventProvider, sebagai pemeriksaan awal ke dalam perilaku aplikasi. Ini dapat membantu Anda selama tahap desain untuk mendapatkan pemahaman tentang informasi yang tersedia; kemudian nanti Anda dapat mengarahkan informasi ini ke penyedia yang lebih kompleks.
Kutipan file konfigurasi berikut menunjukkan healthMonitoring
konfigurasi bagian yang memungkinkan ASP.NET menggunakan penyedia kustom yang ditentukan di atas untuk memproses semua peristiwa pemantauan kesehatan.
<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
Keterangan
ASP.NET pemantauan kesehatan memungkinkan staf produksi dan operasi untuk mengelola aplikasi Web yang disebarkan. Namespace System.Web.Management 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 WebEventProvider kelas untuk membuat penyedia 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 turunan dari WebEventProvider kelas, lihat contoh yang disediakan dalam topik ini.
Konstruktor
WebEventProvider() |
Menginisialisasi instans baru kelas WebEventProvider. |
Properti
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) |
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) |
Menginisialisasi penyusun konfigurasi. (Diperoleh dari ProviderBase) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ProcessEvent(WebBaseEvent) |
Memproses peristiwa yang diteruskan ke penyedia. |
Shutdown() |
Melakukan tugas yang terkait dengan mematikan penyedia. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |