简述httpModule与HttpHandler

ASP.NET 请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,
ASP.NET 把http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,
再次经过管道中的HTTP模块,把结果返回给 客户端。我们可以在每个HttpModule中都可以干预请求的处理过程。
HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中
HttpModule:可以注册Application管道的事件,比如BeginRequest等,和直接在Global事件里写没啥区别,这样写灵活性更强而已
HttpModule机制:
一个HTTP请求在HttpModule容器的传递过程中,会在某一时刻(ResolveRequestCache(第6个)事件)将这个HTTP请求传递
给HttpHandler容器。在这个事件之后,HttpModule容器会建立一个HttpHandler的入口实例,但是此时并没有
将HTTP请求控制权交出,而是继续触发AcquireRequestState(第9个)事件以及PreRequestHandlerExcute(第11个)事件。
在PreRequestHandlerExcute事件之后,HttpModule窗口就会将控制权暂时交给HttpHandler容器,
以便进行真正的HTTP请求处理工作。
而在HttpHandler容器内部会执行ProcessRequest方法来处理HTTP请求。在容器HttpHandler处理完毕整个
HTTP请求之后,会将控制权交还给HttpModule,HttpModule则会继续对处理完毕的HTTP请求信息流进行
层层的转交动作,直到返回到客户端为止。


它也可实现和Global一样在所有页面请求来之前先访问HttpModule或Golbal的代码
自定义HttpModule步骤:
1、创建一个类实现IHttpModule接口,并实现接口
2、在Init方法写自己需要的方法或事件
3、必须把我们写的类关联到管道上,通过在配置文件里添加

转载于:https://www.cnblogs.com/xiaoweigogo/p/7792995.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值