问题: 既然HttpHandler的作用是将请求中,各个不同类型后缀名的文件,映射给不同的处理程序去处理,那么处理程序是在页面生命周期中的那个时间中映射处理请求的呢?
答: 依照上面的24个事件,这个HttpHandler节点中的映射是在第10个步骤中触发的。而他映射给不同的处理程序,这些处理程序中方法、类的实现是在第15步触发的。
再说HttpModule。
HttpHandler是针对一类型的文件,映射给指定的处理程序对请求进行出来。并且映射,与处理都发生在asp.net已经指定好的事件中。
而HttpModule则是针对所有的请求文件,映射给指定的处理程序对请求进行处理,而这些处理,可以发生在请求管线中的任何一个事件中。也就是说你订阅哪个事件,这写处理就发生于那个事件中,处理过后再执行,你订阅过的事件的下一个事件,当然你也可以终止所有事件直接运行最后一个事件,这就意味这他可以不给HttpHandler机会,很牛的HttpModule。
HttpHandler的使用
HttpHandler的使用通过一种防盗链技术来演示
1.首先注册HttpHandler:在Web.config中注册
复制代码 代码如下:
<httpHandlers>
<!--映射jpg格式的文件,给ProcessHandler_test.CustomHandler处理。-->
<!--type里面逗号之前 命名空间加类名(ProcessHandler_test.CustomHandler),后面程序集名称-->
<add path="*.jpg" verb="*" type="httphander_test.CustomHandler, ProcessHandler_test" />
</httpHandlers>
上面注册是把网站中请求jpg格式文件的请求,映射给命名空间为httphander_test类名为CustomHandler的程序集ProcessHandler_test来处理请求。
2.如果想通过HttpHandler处理请求,必须在映射的处理程序中实现接口IHttpHandler
3.映射到的程序代码如下
复制代码 代码如下:
View Code