WmiWebEventProvider Class
Implements an event provider that maps ASP.NET health-monitoring events to Windows Management Instrumentation (WMI) events.
Assembly: System.Web (in System.Web.dll)
System.Configuration.Provider.ProviderBase
System.Web.Management.WebEventProvider
System.Web.Management.WmiWebEventProvider
| Name | Description | |
|---|---|---|
![]() | WmiWebEventProvider() | Initializes a new instance of the WmiWebEventProvider class. |
| Name | Description | |
|---|---|---|
![]() | Description | Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).(Inherited from ProviderBase.) |
![]() | Name | Gets the friendly name used to refer to the provider during configuration.(Inherited from ProviderBase.) |
| Name | Description | |
|---|---|---|
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | Flush() | Removes all events from the provider's buffer.(Overrides WebEventProvider.Flush().) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | Initialize(String, NameValueCollection) | Sets the initial values for this object.(Overrides ProviderBase.Initialize(String, NameValueCollection).) |
![]() | MemberwiseClone() | |
![]() | ProcessEvent(WebBaseEvent) | Processes the event passed to the provider.(Overrides WebEventProvider.ProcessEvent(WebBaseEvent).) |
![]() | Shutdown() | Performs tasks associated with shutting down the provider.(Overrides WebEventProvider.Shutdown().) |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
ASP.NET health monitoring allows production and operations staff to manage deployed Web applications. 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. It also contains supporting types that help during the management of health events.
ASP.NET uses this class to map health-monitoring events to WMI events. To enable the delivery of ASP.NET health-monitoring events to the WMI subsystem, you must configure the WmiWebEventProvider class by adding the appropriate settings in the <healthMonitoring> section of the configuration file.
The information contained in the Aspnet.mof file describes the parameters of the WMI events raised when ASP.NET health-monitoring events are routed to the WmiWebEventProvider class and mapped into WMI events. The Aspnet.mof file is stored in the .NET Framework build directory, for example %windir%\Microsoft.NET\Framework\BuildNumber. For more information about reporting health-monitoring events as WMI events, see NIB: Using WMI to Deliver ASP.NET Health Monitoring Events.
Note |
|---|
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. You can also derive from the health-monitoring types to create your own custom events and providers. For an example of creating a custom provider, see How to: Implement the Health Monitoring Custom Provider Example. |
The following example shows how to create a consumer of WMI events issued by ASP.NET health monitoring as a result of Web-application health events.
Note |
|---|
The WmiWebEventProvider class and the health event types to monitor are already configured by default. The only thing you need to do is to define the rule for all the health events. Remember that the health events are not dispatched to the WmiWebEventProvider provider by default. |
Imports System Imports System.Management ' Capture WMI events associated with ' ASP.NET health monitoring types. Class SampleWmiWebEventListener 'Displays event related information. Shared Sub DisplayEventInformation(ByVal ev _ As ManagementBaseObject) ' It contains the name of the WMI raised ' event. This is the name of the ' event class as defined in the ' Aspnet.mof file. Dim eventTypeName As String ' Get the name of the WMI raised event. eventTypeName = ev.ClassPath.ToString() ' Process the raised event. Select Case eventTypeName ' Process the heartbeat event. Case "HeartBeatEvent" Console.WriteLine("HeartBeat") Console.WriteLine(vbTab + _ "Process: {0}", ev("ProcessName")) Console.WriteLine(vbTab + "App: {0}", _ ev("ApplicationUrl")) Console.WriteLine(vbTab + "WorkingSet: {0}", _ ev("WorkingSet")) Console.WriteLine(vbTab + "Threads: {0}", _ ev("ThreadCount")) Console.WriteLine(vbTab + "ManagedHeap: {0}", _ ev("ManagedHeapSize")) Console.WriteLine(vbTab + "AppDomainCount: {0}", _ ev("AppDomainCount")) ' Process the request error event. Case "RequestErrorEvent" Console.WriteLine("Error") Console.WriteLine("Url: {0}", _ ev("RequestUrl")) Console.WriteLine("Path: {0}", _ ev("RequestPath")) Console.WriteLine("Message: {0}", _ ev("EventMessage")) Console.WriteLine("Stack: {0}", _ ev("StackTrace")) Console.WriteLine("UserName: {0}", _ ev("UserName")) Console.WriteLine("ThreadID: {0}", _ ev("ThreadAccountName")) ' Process the application lifetime event. Case "ApplicationLifetimeEvent" Console.WriteLine("App Lifetime Event {0}", _ ev("EventMessage")) ' Handle events for which processing is not ' provided. Case Else Console.WriteLine("ASP.NET Event {0}", _ ev("EventMessage")) End Select End Sub 'DisplayEventInformation ' End DisplayEventInformation. ' The main entry point for the application. Shared Sub Main(ByVal args() As String) ' Get the name of the computer on ' which this program runs. ' Note. The monitored application must also run ' on this computer. Dim machine As String = Environment.MachineName ' Define the Common Information Model (CIM) path ' for WIM monitoring. Dim path As String = _ String.Format("\\{0}\root\aspnet", machine) ' Create a managed object watcher as ' defined in System.Management. Dim query As String = "select * from BaseEvent" Dim watcher As New ManagementEventWatcher(query) ' Set the watcher options. Dim timeInterval As New TimeSpan(0, 1, 30) watcher.Options = _ New EventWatcherOptions(Nothing, timeInterval, 1) ' Set the scope of the WMI events to ' watch to be ASP.NET applications. watcher.Scope = _ New ManagementScope(New ManagementPath(path)) ' Set the console background. Console.BackgroundColor = ConsoleColor.Blue ' Set foreground color. Console.ForegroundColor = ConsoleColor.Yellow ' Clear the console. Console.Clear() ' Loop indefinitely to catch the events. Console.WriteLine( _ "Listener started. Enter CntlC to terminate") While True Try ' Capture the WMI event related to ' the Web event. Dim ev As ManagementBaseObject = _ watcher.WaitForNextEvent() ' Display the Web event information. DisplayEventInformation(ev) ' Prompt the user. Console.Beep() Catch e As Exception Console.WriteLine("Error: {0}", e) Exit While End Try End While End Sub 'Main End Class 'SampleWmiWebEventListener
The following example is a configuration file excerpt that shows a <healthMonitoring> configuration section that enables ASP.NET to use the WmiWebEventProvider provider to process all health-monitoring events.
<healthMonitoring>
<rules>
<add
name="Using Wmi"
eventName="All Events"
provider="WmiWebEventProvider"
profile="Critical"/>
</rules>
</healthMonitoring>
Available since 2.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
System.Web.Management Namespace
healthMonitoring Element (ASP.NET Settings Schema)
ASP.NET Health Monitoring Overview
NIB: Using WMI to Deliver ASP.NET Health Monitoring Events
How to: Implement the Health Monitoring Custom Provider Example
Creating and Configuring the Application Services Database for SQL Server
.jpeg?cs-save-lang=1&cs-lang=vb)
.jpeg?cs-save-lang=1&cs-lang=vb)
.jpeg?cs-save-lang=1&cs-lang=vb)
.jpeg?cs-save-lang=1&cs-lang=vb)