利用IHttpHandler计算页面的执行时间

来自Cuyahoga 使用自定义的PageHandler处理所有的aspx页面 获取页面的执行时间

using System;
using System.Web;
using System.Web.UI;
using System.Web.SessionState;

namespace Cuyahoga.Web.HttpHandlers
{
    
/// <summary>
    
/// This class handles all aspx page requests for Cuyahoga.
    
/// </summary>
    public class PageHandler : IHttpHandler, IRequiresSessionState
    {
        
#region IHttpHandler Members

        
/// <summary>
        
/// Process the aspx request. This means (eventually) rewriting the url and registering the page 
        
/// in the container.
        
/// </summary>
        
/// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            
string rawUrl = context.Request.RawUrl;
            DateTime startTime 
= DateTime.Now;

            
// Obtain the handler for the current page
            string aspxPagePath = rawUrl.Substring(0, rawUrl.IndexOf(".aspx"+ 5);
            IHttpHandler handler 
= PageParser.GetCompiledPageInstance(aspxPagePath, null, context);

            
// Process the page just like any other aspx page
            handler.ProcessRequest(context);

            TimeSpan duration 
= DateTime.Now - startTime;
            context.Response.Write(String.Format(
"Request finshed. Total duration: {0} ms.", duration.Milliseconds));
        }

        
/// <summary>
        
/// 
        
/// </summary>
        public bool IsReusable
        {
            
get { return true; }
        }

        
#endregion
    }
}

webconfig中注册HttpHandler
<httpHandlers>
            
<add verb="*" path="*.aspx" type="Cuyahoga.Web.HttpHandlers.PageHandler, Cuyahoga.Web" />
</httpHandlers>
Created by jecray
posted @ 2007-08-28 00:31 jecray 阅读(434) 评论(1) 编辑 收藏