• 简述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下redis的安装
    elasticsearch使用时问题
    Elasticsearch 2.x plugin 问题汇总
    elasticsearch-jdbc 插件说明
    ElasticSearch 2.x 问题汇总
    深入JVM《一》
    linux fastdfs 搭建配置(单机)
    mybatis自动generator
    spring-boot mybatis 配置 主从分离 事务
    Maven Nexus
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7792995.html
Copyright © 2020-2023  润新知