Esempio n. 1
0
        void BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;

            if (application != null && application.Context != null)
            {
                var request  = application.Context.Request;
                var response = application.Context.Response;
                if (request != null && request.Path.Contains("TestRequest"))
                {
                    if (request["kill"] == "all")
                    {
                        KillAllThread();
                    }
                    TestRequestResponce(response);
                    response.End();
                    return;
                }
                var thread  = System.Threading.Thread.CurrentThread;
                var process = System.Diagnostics.Process.GetCurrentProcess();

                ThreadRequestInfo lastRequest = null;
                Requests.TryGetValue(thread.ManagedThreadId, out lastRequest);
                if (lastRequest == null)
                {
                    lastRequest = new ThreadRequestInfo()
                    {
                        ThreadId        = thread.ManagedThreadId,
                        LastUrl         = request.RawUrl,
                        Start           = DateTime.Now,
                        End             = DateTime.Now,
                        LastChange      = DateTime.Now,
                        RepeatCount     = 0,
                        UsedMSecond     = 0,
                        UsedProcessTime = process.UserProcessorTime.TotalMilliseconds,
                        State           = "Begin",
                    };
                    Requests.TryAdd(thread.ManagedThreadId, lastRequest);
                }
                else
                {
                    lastRequest.ThreadId   = thread.ManagedThreadId;
                    lastRequest.LastUrl    = request.RawUrl;
                    lastRequest.LastUrl    = request.RawUrl;
                    lastRequest.Start      = DateTime.Now;
                    lastRequest.End        = DateTime.Now;
                    lastRequest.LastChange = DateTime.Now;
                    lastRequest.RepeatCount++;
                    lastRequest.UsedMSecond     = 0;
                    lastRequest.UsedProcessTime = process.UserProcessorTime.TotalMilliseconds;
                    lastRequest.State           = "Begin";
                }
            }
        }
Esempio n. 2
0
        void EndRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;

            if (application != null)
            {
                var request  = application.Context.Request;
                var response = application.Context.Response;
                var process  = System.Diagnostics.Process.GetCurrentProcess();
                var thread   = System.Threading.Thread.CurrentThread;
                ThreadRequestInfo lastRequest = null;
                Requests.TryGetValue(thread.ManagedThreadId, out lastRequest);
                if (lastRequest != null)
                {
                    lastRequest.ThreadId         = thread.ManagedThreadId;
                    lastRequest.End              = DateTime.Now;
                    lastRequest.UsedMSecond      = (lastRequest.End - lastRequest.Start).TotalMilliseconds;
                    lastRequest.UsedProcessTime  = (process.UserProcessorTime.TotalMilliseconds - lastRequest.UsedProcessTime);
                    lastRequest.UsedProcessTime2 = process.Threads.Cast <ProcessThread>().Where(p => p.Id == thread.ManagedThreadId).Select(p => p.PrivilegedProcessorTime.TotalMilliseconds).FirstOrDefault();
                    lastRequest.State            = "End";
                    Requests.TryRemove(thread.ManagedThreadId, out lastRequest);
                }
            }
        }