IHttpHandlerによるページの実行時間の計算

3192 ワード

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を登録
XMLコードのコピー
コードの保存
<httpHandlers>

    <add verb="*" path="*.aspx" 

         type="Cuyahoga.Web.HttpHandlers.PageHandler,Cuyahoga.Web" />

</httpHandlers>