继承IHttpModule拦截http请求

1,原理:浏览器请求-服务器-httpmodule-httphandler处理-浏览器

                 通过继承IHttpModule可以实现拦截http的请求,方面我们记录一些日志,过滤一些非法的请求,甚至实现代码的流量分流等等。

        小老弟们,在web应用程序中可以直接继承此接口;but,在类库需要引用system.web的dll文件。

2,示例:简单实现计算页面的加载时间

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace CNKI.TPI.Web.Base
{
    public class CustHttpModule : IHttpModule
    {
        public void Init(HttpApplication application)//实现IHttpModules中的Init事件
        {
            //订阅两个事件
            application.BeginRequest += new EventHandler(application_BeginRequest);
            application.EndRequest += new EventHandler(application_EndRequest);
        }
        private DateTime starttime;
        private void application_BeginRequest(object sender, EventArgs e)
        {
            //object sender是BeginRequest传递过来的对象
            //里面存储的就是HttpApplication实例
            //HttpApplication实例里包含HttpContext属性
            starttime = DateTime.Now;
        }
        private void application_EndRequest(object sender, EventArgs e)
        {
            DateTime endtime = DateTime.Now;
            HttpApplication application = (HttpApplication)sender;
            HttpContext context = application.Context;
            //context.Response.Write("<p>页面执行时间:" + (endtime - starttime).ToString() + "</p>");
        }
        //必须实现dispose接口
        public void Dispose() { }
    }

}

3,在web.config注册

找到modles节点,撸上此代码,type是命名空间加类名

<system.webServer>
    <modules>
      
      <add name="CusHttpModule" type="Common.CusHttpModule"/>
    
    </modules>
  </system.webServer>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左左在右边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值