WebEventProvider クラス
アセンブリ: System.Web (system.web.dll 内)


運用および操作の担当者は、ASP.NET Health Monitoring を使用して、配置されている Web アプリケーションを管理できます。System.Web.Management 名前空間には、アプリケーションの状態データをパッケージ化する状態イベント型、およびそのデータを処理するプロバイダ型が含まれます。また、状態イベント管理を支援するサポート型も含まれます。
状態イベント処理をカスタマイズする場合、WebEventProvider クラスの派生として独自のカスタム プロバイダを作成できます。
![]() |
---|
ほとんどの場合、ASP.NET 状態監視型は実装のまま使用でき、healthMonitoring 構成セクションに値を指定して ASP.NET Health Monitoring system を制御できます。状態監視型の派生として独自のイベントおよびプロバイダを作成することもできます。WebEventProvider クラスの派生の例については、このトピックの例を参照してください。 |

カスタム プロバイダを WebEventProvider クラスの派生として作成する方法を次のコード例に示します。このカスタム プロバイダは、構成されたイベントをローカル ファイルに書き込みます。該当するローカル ファイルには、適切なアクセス権が与えられている必要があります。このシンプルなカスタム プロバイダ例の主な目的は、開発者が基本的な機構を完全に制御できるようにすることです。本運用のシナリオでは、このプロバイダ、特に BufferedWebEventProvider に用意されているバッファ プロバイダの例を、アプリケーションの動作のメイン プローブとして使用できます。これにより、使用できる情報に関する理解が設計段階で深まり、後でこの情報をより複雑なプロバイダに転送することも可能になります。
次の構成ファイルの抜粋に、healthMonitoring セクションの構成を示します。これにより、ASP.NET は上記で定義されるカスタム プロバイダを使用してすべての状態監視イベントを処理できます。
<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>
Imports System 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 'New ' 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 'Flush ' Shutdown the provider. Public Overrides Sub Shutdown() Flush() End Sub 'Shutdown ' 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 'ProcessEvent ' 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 'StoreToFile End Class 'SampleEventProvider
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()); } } } }

System.Configuration.Provider.ProviderBase
System.Web.Management.WebEventProvider
System.Web.Management.BufferedWebEventProvider
System.Web.Management.EventLogWebEventProvider
System.Web.Management.TraceWebEventProvider
System.Web.Management.WmiWebEventProvider


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


WebEventProvider コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


WebEventProvider コンストラクタは、コードで直接使用するためのものではありません。ASP.NET によって呼び出されます。WebEventProvider コンストラクタは、WebEventProvider クラスの派生の場合に呼び出すことができます。

このコンストラクタをカスタム イベント プロバイダで使用する方法を次のコード例に示します。
' 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 'New ' More custom initialization goes here.
// 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. }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


WebEventProvider プロパティ

名前 | 説明 | |
---|---|---|
![]() | Description | 管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。 ( ProviderBase から継承されます。) |
![]() | Name | 構成時にプロバイダを参照するために使用される表示名を取得します。 ( ProviderBase から継承されます。) |

WebEventProvider メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | Flush | イベントをプロバイダのバッファからイベント ログに移動します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | Initialize | プロバイダを初期化します。 ( ProviderBase から継承されます。) |
![]() | ProcessEvent | プロバイダに渡されたイベントを処理します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | Shutdown | プロバイダのシャットダウンに関連するタスクを実行します。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

WebEventProvider メンバ
WebEventProvider データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Description | 管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。(ProviderBase から継承されます。) |
![]() | Name | 構成時にプロバイダを参照するために使用される表示名を取得します。(ProviderBase から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | Flush | イベントをプロバイダのバッファからイベント ログに移動します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | Initialize | プロバイダを初期化します。 (ProviderBase から継承されます。) |
![]() | ProcessEvent | プロバイダに渡されたイベントを処理します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | Shutdown | プロバイダのシャットダウンに関連するタスクを実行します。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

Weblioに収録されているすべての辞書からWebEventProviderを検索する場合は、下記のリンクをクリックしてください。

- WebEventProviderのページへのリンク