这个IHttpHandler,要想到asp.net生命周期 ,想到哪个从你发起请求开始,这个请求通过HttpModule------》IHttpHandler的;

执行HttpModule的一系列事件后然后执行HttpHandler,然后又执行HttpModule的一些事件。

从图中可以看出,你发送的http请求的最后是在HttpHandler中处理的;
HttpModule是一个HTTP请求的“必经之路”
所以在请求还没有到达HttpHandler的时候,可以对这个请求附加一些信息。
或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。
(过滤器???哈?,怎么在我脑海里冒出来:此路是我开,要想从此过,留下买路财)

一个HTTP请求在HttpModule容器的传递过程中,会在某一时刻(ResolveRequestCache事件)将这个HTTP请求传递给HttpHandler容器。在这个事件之后,HttpModule容器会建立一个HttpHandler的入口实例,但是此时并没有将HTTP请求控制权交出,而是继续触发AcquireRequestState事件以及PreRequestHandlerExcute事件。在PreRequestHandlerExcute事件之后,HttpModule窗口就会将控制权暂时交给HttpHandler容器,以便进行真正的HTTP请求处理工作。

而在HttpHandler容器内部会执行ProcessRequest方法来处理HTTP请求。在容器HttpHandler处理完毕整个HTTP请求之后,会将控制权交还给HttpModule,HttpModule则会继续对处理完毕的HTTP请求信息流进行层层的转交动作,直到返回到客户端为止。

例子看原文吧

MyHttpModule代码

 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 6 namespace MyHttpModule7 {8     /// <summary>9     /// 自定义HttpModule;看到这个鬼,就要想到继承IHttpModule接口和在config中配置信息       ///注意标红的这三个方法:请求信息先进入到Init初始化的方法里,然后进入
10     /// </summary>
11     public class MyHttpModule : IHttpModule
12     {
13         public void Dispose()
14         {
15             throw new NotImplementedException();
16         }
17
18         public void Init(HttpApplication context)
19         {
20             context.BeginRequest += context_BeginRequest;
21             context.EndRequest += context_EndRequest;
22         }
23
24         void context_EndRequest(object sender, EventArgs e)
25         {
26             HttpApplication app = sender as HttpApplication;
27             if (app != null)
28             {
29                 HttpContext context = app.Context;
30                 HttpResponse response = app.Response;
31                 response.Write("自定义HttpModule中的EndRequest");
32
33             }
34         }
35
36         void context_BeginRequest(object sender, EventArgs e)
37         {
38             HttpApplication app = sender as HttpApplication;
39             if (app != null)
40             {
41                 HttpContext context = app.Context;
42                 HttpResponse response = app.Response;
43                 response.Write("自定义HttpModule中的BeginRequest");
44
45             }
46         }
47     }
48 }

在web.config注册自定义的HttpModule

 1 <?xml version="1.0" encoding="utf-8"?>2 <!--3   For more information on how to configure your ASP.NET application, please visit4   http://go.microsoft.com/fwlink/?LinkId=1694335   -->6 <configuration>7   <system.web>8     <compilation debug="true" targetFramework="4.5" />9     <httpRuntime targetFramework="4.5" />
10
11   </system.web>
12   <system.webServer>
13     <modules>
14       <add name="MyHttpModule" type="MyHttpModule.MyHttpModule,MyHttpModule"/>
15     </modules>
16   </system.webServer>
17 </configuration>

浏览页面Default.aspx

转载于:https://www.cnblogs.com/ZkbFighting/p/9022362.html

IHttpHandler的学习(0-2)相关推荐

  1. 【逆强化学习-0】Introduction

    文章目录 专栏传送门 0.引言 1.逆强化学习发展历程 2.需要准备的 专栏传送门 0.简介 1.学徒学习 2.最大熵学习 0.引言 \qquad相比于深度学习,国内强化学习的教程并不是特别多,而相比 ...

  2. [PyQt] MCV模式学习-0

    MCV模式学习-0 目的 item-based模式 0.0 QStringListModel 0.1 QAbstractListModel 0.2 目的 之前的PyQt采用的是item based形式 ...

  3. IHttpHandler的学习(0)

    本片文章转自网络 问题1:什么是HttpHandler?(Handler:处理者:那就是对Http请求的处理拉) 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什 ...

  4. 华为弹性云服务器ECS使用学习0

    学习大纲 ECS概述 组成:CPU,内存,镜像,操作系统,云硬盘 ECS产品优势 弹性伸缩AS(弹性可扩展) ECS产品架构 Region:地理位置和网络时延的划分,同一个Region中共享计算和存储 ...

  5. 编程语言学习——0基础C语言入门

    自我介绍 我是一名即将升入大三的计算机科学与技术专业的学生,这是我第一次在CSDN上发表文章,在平时写代码时我会经常遇到许许多多的问题,所以在这个假期中我想不断地充实自己,让自己的专业知识基础更加牢固 ...

  6. Python学习0——基础知识1

    复习一下:Python基础知识学习 菜鸟教程:Python3 基础语法 | 菜鸟教程 (runoob.com) 一.数据类型 1.Number(数字) (1)数字类型 Python包括4种数字类型:i ...

  7. CUDA编程学习0——环境搭建环境详解

    目录 环境配置 软件安装 1.支持最高的cuda版本查询,下载cuda开发软件: 3.配置环境(~/.bashrc添加环境变量) 4.后续维护查询 补:关于windows下的cuda环境配置 一.Vi ...

  8. GIT学习0基础到入门(附图)

    GIT学习 1.git 常用命令代码 提交,或者修改代码到暂存区 git add 2.设置签名 git config user.name JackMa git config user.email 13 ...

  9. Hadoop基础学习0

    20161209 10:43--12:00 Hadoop,The Apache™ Hadoop® project develops open-source software for reliable, ...

最新文章

  1. TransDecoder
  2. ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  3. springboot配置热部署
  4. MD5计算,一个扩展类,哪里都能用
  5. 发布 ASP.NET Core 应用
  6. NYOJ-疯牛(贪心)
  7. JAVA连接SQL server
  8. 精通Spring Boot——第三篇:详解WebMvcConfigurer接口
  9. leecode---40---数组,dfs---求所有的组合为target,有重复数组
  10. PSCC2014前端切图小方法(不断补充)
  11. C语言编写几何平均数的函数,Excel 计算几何平均值:GEOMEAN函数
  12. CH552-HID 键盘 鼠标
  13. 物联网卡与普通的sim卡的区别
  14. 题解 CF133A 【HQ9+】
  15. ts中any 、unKnown的区别
  16. 模糊查询下划线“_”时查询的是全部数据
  17. 解决oracle数据库的表中存在异常日期值在查询时抛出ora-01841错误的办法
  18. 0359-模型训练和部署-Iris数据集
  19. 我,大二实习,996,月工资800
  20. WPF学习之资源-Resources

热门文章

  1. .NET中的IO操作基础介绍
  2. 加密算法、DES、IDEA、RSA、DSA
  3. 用 WEKA 进行数据挖掘,第 3 部分: 最近邻和服务器端库
  4. Java生成Word文档
  5. RSA非对称加密简析-java
  6. Java变量的修饰符
  7. Hive Fetch Task
  8. C#中Json字符串的各种应用类
  9. WordPress 运行流程分析
  10. 设置Exchange 2010附件大小限制原则