Asp.Net中的HttpModule和HttpHandler

---------------------------------HttpModule-------------------------------------------

在请求管道中的事件中注册方法有两种方式:实现接口IhttpModule(过滤器方式),global.asax。
                                                                            能在其中弄url重写
1 、 在HttpApplication初始化过程中,会根据配置文件web.config加载并初始化相应的HttpModule对象。对于HttpApplication来说,在它处理HTTP请求的不同的阶段会触发不同的事件(Event),而HttpModule的意义在于通过注册HttpApplication的相应的事件,将所需的操作注入整个HTTP请求的处理流程。ASP.NET的很多功能,比如身份验证、授权、缓存等,都是通过相应的HttpModule实现的。
 
2、
     实现了IhttpModule的类就叫做过滤器类,接口中有一个Init(HttpAppliaction context)方法,可以在HttpApplication的事件管道中的某个事件注册方法。
 
3、HttpModule :订阅管线事件,并在事件处理器中执行所需的相关操作
 
 
  4、在过滤器中 有 response.end().时,就会结束请求,后面的请求管道就不会执行
 
 
 5、可以查看当前所有的module
           HttpApplication app = HttpContext.Current.ApplicationInstance;
 
            StringBuilder sb = new StringBuilder();
            foreach (string module in app.Modules.AllKeys)
            {
                sb.AppendLine(module).Append("</br>");
            }
            Response.Write(sb.ToString());
 
 
 
  --------------------------------------httpModule来实现URL路由---------------------------------
  使用HttpModule来实现URL路由。这个功能随着Asp.net MVC框架的出现也逐渐流行起来了。
URL路由的目标也是为了使用URL更友好,与URL重写类似。
实现原理:订阅管线的PostResolveRequestCache事件,检查URL是不是期望的路由模式,如果是,则要根据请求中所包含的信息找到一个合适的处理器,并临时保存这个处理器,重写URL到一个Asp.net能映射处理器的地址。在管线的PostMapRequestHandler中,检查前面有没有临时保存的处理器,如果有,则重新给Context.Handler赋值,并重写URL到原始地址。在管线的后续处理中,最终会使用Context.Handler的HttpHandler
 
 
 
  -------------------------HttpHandler------------------------------------------------
1、
  HttpHandler:处理请求的核心对象 ---请求在第10步被映射到一个HttpHandler
                    执行处理代码(接受用户数据,连接数据库,生成浏览器代码,然后将结果再次通过HttpModules组成的请求管道返回)
 
2、
可以自定义HttpHandler,要在web.config中配置
 
 
 
  ------------------------总结-----------------------
  1、每一个请求都将会映射到一个Httphandler,也是处理请求的重要对象
  2、HttpModule可以任意订阅这些事件,可以在事件中注册方法
  3、两者都要在web.config中注册
  4、HttpHandler是每个请求的主要处理对象,而HttpModule可以选择请求交给哪个HttpHandler来处理,甚至,它还可以选择它自己来处理请求。
 
 
 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值