定制自己的Module获取请求处理时间

怎样获得一个http请求处理的时间

时间计算依据:当HttpApplication事件BeginRequest执行时,我们开始计时,
HttpApplication事件EndRequest执行时,我们计时结束,这一段时间既为一个http请求的处理时间。
我们只要定制自己的一个Module实现自己的两个计时方法,再把它加到HttpApplication的BeginReques
事件代理和BeginRequest代理上就行了。

定制自己的Module(注意当HttpApplication对象创建完后马上会创建Module对象,Module对象的生命周期

为HttpApplication的生命周期)
功能:陷入处理所有应用程序(HttpApplication)事件 包括
1:BeginRequest
2:AuthenticateRequest
3:AuthorizeRequest
4:ResolveRequestCache
5:AcquireRequestState
6:PreRequestHandlerExecute
7:PostRequestHandlerExecute
8:ReleaseRequestState
9:UpdateRequestCache
10:EndRequest
11:Disposed
12:Error
13:PreSendRequestContent
14:PreSendRequestHeaders

定制自己的Module 要实现IHttpModule接口
public interface IHttpModule
{
  void Dispose();
  void Init(HttpApplication context);
}


代码如下:
using System;
using System.Web;
namespace WebApplication
{
 public class RequestTimerModule:IHttpModule
 {
  public RequestTimerModule()
  {
  }
  #region IHttpModule 成员

  public void Init(HttpApplication context)
  {
   context.BeginRequest+=new EventHandler(this.ModuleBeginRequest);
   context.EndRequest+=new EventHandler(this.ModuleEndRequest);
  }

  public void Dispose()
  {
   // TODO:  添加 RequestTimerModule.Dispose 实现
  }
  public void ModuleBeginRequest(Object sender,EventArgs e)
  {
   HttpApplication ha=sender as HttpApplication;
   ha.Context.Items["bTime"]=DateTime.Now;
  }

  public void ModuleEndRequest(Object sender, EventArgs e)
  {
   HttpApplication ha=sender as HttpApplication;
   DateTime dt=(DateTime)(ha.Context.Items["bTime"]);
   TimeSpan span=DateTime.Now-dt;
   ha.Response.AddHeader("RequestTiming",span.ToString());
   ha.Response.Write(span.ToString());
  }
  #endregion
 }
}

现在我们要把定制的这个Module部署到应用程序中去,我们可以在web.config文件中
添加元素httpModules在system.web元素下,添加部分如下
<system.web>
    <httpModules>
      <add name="Timer"
           type="WebApplication.RequestTimerModule, WebApplication" />
    </httpModules>
  </system.web>

name 是唯一代表该特定module的字符串,type 是该Module的类型,要包括命名空间,后面的

WebApplication代表该Modlue 的 assembly 名字。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值