• 简述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、必须把我们写的类关联到管道上,通过在配置文件里添加

  • 相关阅读:
    【Linux基础总结】Linux基本环境
    mysql 源码安装
    windows内存映射文件
    TCHAR和CHAR类型的互转
    删除链表中重复的结点
    iptables防火墙
    两个链表的第一个公共结点
    无人值守安装linux系统
    dns服务 很多问题,后续再研究
    string 类型转换
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7792995.html
Copyright © 2020-2023  润新知