private void FillRequestWmiDataFields(ref UnsafeNativeMethods.WmiData wmiData, WebRequestInformation reqInfo) { string name; string authenticationType; bool isAuthenticated; IPrincipal principal = reqInfo.Principal; if (principal == null) { name = string.Empty; authenticationType = string.Empty; isAuthenticated = false; } else { IIdentity identity = principal.Identity; name = identity.Name; isAuthenticated = identity.IsAuthenticated; authenticationType = identity.AuthenticationType; } wmiData.requestUrl = reqInfo.RequestUrl; wmiData.requestPath = reqInfo.RequestPath; wmiData.userHostAddress = reqInfo.UserHostAddress; wmiData.userName = name; wmiData.userAuthenticated = isAuthenticated; wmiData.userAuthenticationType = authenticationType; wmiData.requestThreadAccountName = reqInfo.ThreadAccountName; }
private void FillErrorWmiDataFields(ref UnsafeNativeMethods.WmiData wmiData, WebThreadInformation threadInfo) { wmiData.threadId = threadInfo.ThreadID; wmiData.threadAccountName = threadInfo.ThreadAccountName; wmiData.stackTrace = threadInfo.StackTrace; wmiData.isImpersonating = threadInfo.IsImpersonating; }
private void FillBasicWmiDataFields(ref UnsafeNativeMethods.WmiData wmiData, WebBaseEvent eventRaised) { WebApplicationInformation applicationInformation = WebBaseEvent.ApplicationInformation; wmiData.eventType = (int)WebBaseEvent.WebEventTypeFromWebEvent(eventRaised); wmiData.eventCode = eventRaised.EventCode; wmiData.eventDetailCode = eventRaised.EventDetailCode; wmiData.eventTime = this.WmiFormatTime(eventRaised.EventTime); wmiData.eventMessage = eventRaised.Message; wmiData.sequenceNumber = eventRaised.EventSequence.ToString(CultureInfo.InstalledUICulture); wmiData.occurrence = eventRaised.EventOccurrence.ToString(CultureInfo.InstalledUICulture); wmiData.eventId = eventRaised.EventID.ToString("N", CultureInfo.InstalledUICulture); wmiData.appDomain = applicationInformation.ApplicationDomain; wmiData.trustLevel = applicationInformation.TrustLevel; wmiData.appVirtualPath = applicationInformation.ApplicationVirtualPath; wmiData.appPath = applicationInformation.ApplicationPath; wmiData.machineName = applicationInformation.MachineName; if (eventRaised.IsSystemEvent) { wmiData.details = string.Empty; } else { WebEventFormatter formatter = new WebEventFormatter(); eventRaised.FormatCustomEventDetails(formatter); wmiData.details = formatter.ToString(); } }
void FillRequestWmiDataFields(ref UnsafeNativeMethods.WmiData wmiData, WebRequestInformation reqInfo) { string user; string authType; bool authed; IPrincipal iprincipal = reqInfo.Principal; if (iprincipal == null) { user = String.Empty; authType = String.Empty; authed = false; } else { IIdentity id = iprincipal.Identity; user = id.Name; authed = id.IsAuthenticated; authType = id.AuthenticationType; } wmiData.requestUrl = reqInfo.RequestUrl; wmiData.requestPath = reqInfo.RequestPath; wmiData.userHostAddress = reqInfo.UserHostAddress; wmiData.userName = user; wmiData.userAuthenticated = authed; wmiData.userAuthenticationType = authType; wmiData.requestThreadAccountName = reqInfo.ThreadAccountName; }
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))); } }