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();
            }
        }
Esempio n. 4
0
        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) }));
            }
        }
Esempio n. 6
0
        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)));
            }
        }
Esempio n. 7
0
        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)));
            }
            
        }