public override void ProcessEvent(WebBaseEvent eventRaised) { UnsafeNativeMethods.WmiData wmiData = new UnsafeNativeMethods.WmiData(); this.FillBasicWmiDataFields(ref wmiData, eventRaised); WebApplicationLifetimeEvent event1 = eventRaised as WebApplicationLifetimeEvent; if (eventRaised is WebManagementEvent) { WebProcessInformation processInformation = ((WebManagementEvent)eventRaised).ProcessInformation; wmiData.processId = processInformation.ProcessID; wmiData.processName = processInformation.ProcessName; wmiData.accountName = processInformation.AccountName; } if (eventRaised is WebRequestEvent) { this.FillRequestWmiDataFields(ref wmiData, ((WebRequestEvent)eventRaised).RequestInformation); } if (eventRaised is WebAuditEvent) { this.FillRequestWmiDataFields(ref wmiData, ((WebAuditEvent)eventRaised).RequestInformation); } if (eventRaised is WebAuthenticationSuccessAuditEvent) { wmiData.nameToAuthenticate = ((WebAuthenticationSuccessAuditEvent)eventRaised).NameToAuthenticate; } if (eventRaised is WebAuthenticationFailureAuditEvent) { wmiData.nameToAuthenticate = ((WebAuthenticationFailureAuditEvent)eventRaised).NameToAuthenticate; } if (eventRaised is WebViewStateFailureAuditEvent) { ViewStateException viewStateException = ((WebViewStateFailureAuditEvent)eventRaised).ViewStateException; wmiData.exceptionMessage = System.Web.SR.GetString(viewStateException.ShortMessage); wmiData.remoteAddress = viewStateException.RemoteAddress; wmiData.remotePort = viewStateException.RemotePort; wmiData.userAgent = viewStateException.UserAgent; wmiData.persistedState = viewStateException.PersistedState; wmiData.referer = viewStateException.Referer; wmiData.path = viewStateException.Path; } if (eventRaised is WebHeartbeatEvent) { WebHeartbeatEvent event2 = eventRaised as WebHeartbeatEvent; WebProcessStatistics processStatistics = event2.ProcessStatistics; wmiData.processStartTime = this.WmiFormatTime(processStatistics.ProcessStartTime); wmiData.threadCount = processStatistics.ThreadCount; wmiData.workingSet = processStatistics.WorkingSet.ToString(CultureInfo.InstalledUICulture); wmiData.peakWorkingSet = processStatistics.PeakWorkingSet.ToString(CultureInfo.InstalledUICulture); wmiData.managedHeapSize = processStatistics.ManagedHeapSize.ToString(CultureInfo.InstalledUICulture); wmiData.appdomainCount = processStatistics.AppDomainCount; wmiData.requestsExecuting = processStatistics.RequestsExecuting; wmiData.requestsQueued = processStatistics.RequestsQueued; wmiData.requestsRejected = processStatistics.RequestsRejected; } if (eventRaised is WebBaseErrorEvent) { Exception errorException = ((WebBaseErrorEvent)eventRaised).ErrorException; if (errorException == null) { wmiData.exceptionType = string.Empty; wmiData.exceptionMessage = string.Empty; } else { wmiData.exceptionType = errorException.GetType().Name; wmiData.exceptionMessage = errorException.Message; } } if (eventRaised is WebRequestErrorEvent) { WebRequestErrorEvent event3 = eventRaised as WebRequestErrorEvent; WebRequestInformation requestInformation = event3.RequestInformation; WebThreadInformation threadInformation = event3.ThreadInformation; this.FillRequestWmiDataFields(ref wmiData, requestInformation); this.FillErrorWmiDataFields(ref wmiData, threadInformation); } if (eventRaised is WebErrorEvent) { WebErrorEvent event4 = eventRaised as WebErrorEvent; WebRequestInformation reqInfo = event4.RequestInformation; WebThreadInformation threadInfo = event4.ThreadInformation; this.FillRequestWmiDataFields(ref wmiData, reqInfo); this.FillErrorWmiDataFields(ref wmiData, threadInfo); } int num = UnsafeNativeMethods.RaiseWmiEvent(ref wmiData, AspCompatApplicationStep.IsInAspCompatMode); if (num != 0) { throw new HttpException(System.Web.SR.GetString("Wmi_provider_error", new object[] { "0x" + num.ToString("X8", CultureInfo.InstalledUICulture) })); } }
public override void ProcessEvent(WebBaseEvent eventRaised) { Debug.Trace("WmiWebEventProvider", "ProcessEvent: event=" + eventRaised.GetType().Name); UnsafeNativeMethods.WmiData wmiData = new UnsafeNativeMethods.WmiData(); // Note: WMI sint64 requires a string param FillBasicWmiDataFields(ref wmiData, eventRaised); if (eventRaised is WebApplicationLifetimeEvent) { // Nothing special for this class. } if (eventRaised is WebManagementEvent) { WebProcessInformation processEventInfo = ((WebManagementEvent)eventRaised).ProcessInformation; wmiData.processId = processEventInfo.ProcessID; wmiData.processName = processEventInfo.ProcessName; wmiData.accountName = processEventInfo.AccountName; } if (eventRaised is WebRequestEvent) { FillRequestWmiDataFields(ref wmiData, ((WebRequestEvent)eventRaised).RequestInformation); } if (eventRaised is WebAuditEvent) { FillRequestWmiDataFields(ref wmiData, ((WebAuditEvent)eventRaised).RequestInformation); } if (eventRaised is WebAuthenticationSuccessAuditEvent) { wmiData.nameToAuthenticate = ((WebAuthenticationSuccessAuditEvent)eventRaised).NameToAuthenticate; } if (eventRaised is WebAuthenticationFailureAuditEvent) { wmiData.nameToAuthenticate = ((WebAuthenticationFailureAuditEvent)eventRaised).NameToAuthenticate; } if (eventRaised is WebViewStateFailureAuditEvent) { ViewStateException vse = ((WebViewStateFailureAuditEvent)eventRaised).ViewStateException; wmiData.exceptionMessage = SR.GetString(vse.ShortMessage); wmiData.remoteAddress = vse.RemoteAddress; wmiData.remotePort = vse.RemotePort; wmiData.userAgent = vse.UserAgent; wmiData.persistedState = vse.PersistedState; wmiData.referer = vse.Referer; wmiData.path = vse.Path; } if (eventRaised is WebHeartbeatEvent) { #if DBG try { #endif WebHeartbeatEvent hbEvent = eventRaised as WebHeartbeatEvent; WebProcessStatistics procStats = hbEvent.ProcessStatistics; wmiData.processStartTime = WmiFormatTime(procStats.ProcessStartTime); wmiData.threadCount = procStats.ThreadCount; wmiData.workingSet = procStats.WorkingSet.ToString(CultureInfo.InstalledUICulture); wmiData.peakWorkingSet = procStats.PeakWorkingSet.ToString(CultureInfo.InstalledUICulture); wmiData.managedHeapSize = procStats.ManagedHeapSize.ToString(CultureInfo.InstalledUICulture); wmiData.appdomainCount = procStats.AppDomainCount; wmiData.requestsExecuting = procStats.RequestsExecuting; wmiData.requestsQueued = procStats.RequestsQueued; wmiData.requestsRejected = procStats.RequestsRejected; #if DBG } catch (Exception e) { Debug.Trace("WmiWebEventProvider", e.ToString()); throw; } #endif } if (eventRaised is WebBaseErrorEvent) { Exception exception = ((WebBaseErrorEvent)eventRaised).ErrorException; if (exception == null) { wmiData.exceptionType = String.Empty; wmiData.exceptionMessage = String.Empty; } else { wmiData.exceptionType = exception.GetType().Name; wmiData.exceptionMessage = exception.Message; } } if (eventRaised is WebRequestErrorEvent) { WebRequestErrorEvent reEvent = eventRaised as WebRequestErrorEvent; WebRequestInformation reqInfo = reEvent.RequestInformation; WebThreadInformation threadInfo = reEvent.ThreadInformation; FillRequestWmiDataFields(ref wmiData, reqInfo); FillErrorWmiDataFields(ref wmiData, threadInfo); } if (eventRaised is WebErrorEvent) { WebErrorEvent eEvent = eventRaised as WebErrorEvent; WebRequestInformation reqInfo = eEvent.RequestInformation; WebThreadInformation threadInfo = eEvent.ThreadInformation; FillRequestWmiDataFields(ref wmiData, reqInfo); FillErrorWmiDataFields(ref wmiData, threadInfo); } int hr = UnsafeNativeMethods.RaiseWmiEvent(ref wmiData, AspCompatApplicationStep.IsInAspCompatMode); if (hr != 0) { throw new HttpException(SR.GetString(SR.Wmi_provider_error, "0x" + hr.ToString("X8", CultureInfo.InstalledUICulture))); } }