HttpHandlers 和 HttpModules 通过扩展原始的页面框架,提供了用于处理请求和响应的两种途径。HttpHanders的主要目的是处理对某种特定文件或者在URL中对某个文件路径的请求,而HttpModule则主要被用于在最开始的阶段处理一个请求以及在最后阶段处理一个响应。

HttpHandlers是指实现了IHttpHandler接口的类。它们在ProcessRequest()方法中获得对当前HttpContext对象的引用,并能依靠HttpContext对象的属性来执行代码。典型的例子是,HttpHandler分析来自Request属性(对象)的数据并通过Response属性(对象)发送回某些东西。HttpHandler同时实现了一个IsReusable属性,它告诉Asp.net是否类的同一个实例能够用于处理并发(subsequent)的请求

第一步:首先新建一个类库项目:

using System;
using System.Web;

public class Handler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
    {
        context.Response.Write("aaa");
    }

public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

第二步:在web项目中引用此dll

第三步:在Web.Config中进行配置,type参数为:命名空间名.类名,程序集名

<httpHandlers>
        <add verb="*" path="*.aspx" type="Handler,ClassLibrary1" />
</httpHandlers>

好了,现在你不论访问哪一个aspx文件,返回的都是aaa了!

HttpModules通过添加事件处理器到应用程序的事件,从而代码可以同应用程序进行交互。这些类都必须实现IHttpModule接口。Init()方法为我们提供了对一个应用程序的引用,在那个方法中我们可以绑定事件处理器到应用程序的事件上。事件处理器通过实现基本的事件处理器标记式来同应用程序进行交互。HttpModule也实现了一个Dispose()方法,它被用于在应用程序结束时执行必需的清理工作。

第一步:首先新建一个类库项目:

namespace ClassLibrary1
{
    class Class2:IHttpModule
    {
        public void Dispose()
        {
            //throw new Exception("The method or operation is not implemented.");
        }

public void Init(HttpApplication context)
        {
            context.Context.Cache["a"] = "a";
        }

}
}

第二步:在Web应用程序中添加此引用

第三步:在Web.Config中进行配置,name随便起,type格式为:命名空间名.类名

<httpModules>
   <add name="a" type="ClassLibrary1.Class2"/>
  </httpModules>

第四步:在web应用程序中验证
if (Cache["a"] != null)
{
    Response.Write(Cache["a"].ToString());
}
else
{
    Response.Write("no");
}

可以看到,打印的是a

其实,HttpModule是在HttpHandler之前就响应的,所以可以影响后者。

转载于:https://www.cnblogs.com/hanwater/archive/2010/04/02/1702820.html

httphandlers 与 httpmodules相关推荐

  1. httpHandlers和httpModules接口介绍 (7)

    将编译的dll文件拷贝到web项目的bin目录下,在web项目的web.config文件system.web节点中配置: 这样就将自定义的HttpModule类MyHttpModule插入到了当前we ...

  2. httpHandlers和httpModules接口介绍 (5)

    IHttpHandler工厂 class TestHandlerFactory : IHttpHandlerFactory { public IHttpHandler GetHandler (Http ...

  3. httpModules 与 httpHandlers

    httpModules 与 httpHandlers ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后 ...

  4. ASP.NET AJAX环境的简单构建(ZT)

    1 概述 Microsoft ASP.NET AJAX 是 Microsoft 公司对 Ajax 技术的完美封装.它能使你已快速的创建包含丰富用户体验的用户界面的 Web 页面,提供加入了跨浏览器的 ...

  5. HttpHandler与HttpModule区别

    ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pi ...

  6. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  7. 【转】从底层了解ASP.Net体系结构

    前言 关于ASP.NET的底层的工作机制,最近园子里讨论的甚是火热.相信很多人都看过Rick Strahl先生的一篇经典之作:A low-level Look at the ASP.NET Archi ...

  8. BlogEngine.Net架构与源代码分析系列(转载)

    01.BlogEngine.Net架构与源代码分析系列part1:开篇介绍 02.BlogEngine.Net架构与源代码分析系列part2:业务对象--共同的父类BusinessBase 03.Bl ...

  9. 错误:'sys'未定义解决方法.(asp.net Ajax v1.0.61025版)

    重装系统后又装了ajax 可是用的时候老是提示"错误:'sys'未定义",看了看以前做的项目,发现Web.Config里面少了<httpHandlers>和<ht ...

最新文章

  1. Multiple markers at this line @Override的解决方法
  2. 使用 VS2013 Update 4 编译 Notepad++ 6.8.1
  3. SHT1x/SHT7x数字温湿度传感器驱动编写
  4. 一个程序员的逗逼瞬间(四)
  5. 单模光电转换器怎么接_单模光纤收发器怎么连接?
  6. a = 3 中3在栈还是堆_阳台要不要装推拉门?纠结3次后还是装错了,返工中
  7. windows 运行banana
  8. 2013 8.20 ip地址的计算总结
  9. string wstring
  10. 生成Ipa安装包的plist文件后生成下载链接
  11. Java中内存泄漏八种情况的总结
  12. 人工智能究竟能否实现?
  13. 粒子群算法几个适应度评价函数
  14. Android device monitor
  15. 云原生中间件RocketMQ-消费者消费模式之广播模式、偏移量offset解析
  16. 索尼新动作,联手Nolan推出AR摩托车头盔
  17. 4.1 js小练习题javascript 今日小练习
  18. 无主键mysql表创建主键
  19. LTE学习:PHICH
  20. python: np.random.rand(); random.randn(); random.randint()

热门文章

  1. 不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~
  2. 一文告诉你 Java RMI 和 RPC 的区别!
  3. UNIX:缓冲区和重定向
  4. Java面向对象基础整理
  5. C语言 从指定文件中依次读出字符直至文件结束
  6. org.hibernate.transientobjectexception:The given object has a null identifier: com.gxuwz.check.entit
  7. mysql求女生人数_在读女硕士110多万!为什么越来越多的女生选择考研?
  8. mysql 分析执行计划的效率_MySQL执行计划分析
  9. 尼康单反相机测试软件,尼康D4S数码单反相机专题测试
  10. mysql server 组件cve_Oracle MySQL Server 'Server'子组件远程安全漏洞(CVE-2012-0574)