コード例 #1
0
        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) }));
            }
        }
コード例 #2
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)));
            }
        }