ASP.NET处理程序和模块
ASP.NET HTTP 处理程序(Handler)是响应对 ASP.NET Web 应用程序的请求而运行的程序
如处理 *.aspx文件的ASP.NET处理程序,当用户请求 *.aspx文件时就通过相应的处理程序.
这是ASP.NET内置的处理程序,默认处理*.aspx文件的是ASP.NET的页处理程序
(用于所有 ASP.NET 页的默认 HTTP 处理程序.)
内置处理程序还有:
处理*asmx文件的Web服务处理程序在(ASP.NET 中作为
.asmx 文件创建的 Web 服务页的默认 HTTP 处理程序)
处理ashx文件的泛型处理程序(不含 UI 和包括 @ WebHandler 指令的所有
Web 处理程序的默认 HTTP 处理程序)
学习ASP.NET处理程序编程的目的:深入了解ASP.NET服务器相应客户端的过程,
创建自己的ASP.NET处理程序来提高网站的健壮性(比如状态、身份验证等)。
创建HTTP处理程序步骤:
实现 IHttpHandler接口。
实现 ProcessRequest方法。
在 Web.config 中注册该处理程序。
要创建ASP.NET处理程序要实现 IHttpHander接口(System.Web命名空间下)
IHttpHander接口中只有一个方法 void ProcessRequest(HttpContext context)
而且还有一个属性 IsReusable 获取一个值,该值指示其他请求是否可以使用 IHttpHandler实例。
此时已经实例化好了context对象(一个context对象相当于整个网站信息,context中有
Application、Response、Request等属性),这样就把用户的请求和响应完全掌握在自己手中了。
实现IHttpHander接口(这里注意一下显式实现,隐式实现,想一下接口的定义)
ASP.NET处理程序需要在Web.config中配置
找到<httpHandlers></httpHandlers>配字节
(根据请求中指定的 URL 和 HTTP 谓词将传入的请求映射到相应的处理程序)
<add> 指令按由上而下的顺序进行处理。如果两个或多个 <add> 元素指定相同的谓词/路径,
组合则最后一个 <add> 会重写其他所有元素。
<add verb="" path="*.文件扩展名" type="(命名空间)类">
ASP.NET模块
HTTP 模块(Module)是一个在每次针对应用程序发出请求时调用的程序集。
HTTP 模块作为 ASP.NET 请求管道的一部分调用,它们能够在整个请求过程中访问生命周期事件
HTTP 模块一般用于检查传入和传出的请求并根据该请求进行操作。
创建HTTP模块步骤:
1、实现 IHttpModule接口。
2、处理 Init 方法并为所需事件进行注册。
3、处理该事件。
4、在 Web.config 中注册该模块。
实现IHttpModule接口(System.Web命名空间下)
IHttpModule接口中有两个方法:
Dispose 处置由实现 IHttpModule 的模块使用的资源(内存除外)。
Init 初始化模块,并使其为处理请求做好准备。
Init(HttpApplication application)初始化模块,并使其为处理请求做好准备。
该方法最为实用
在该方法中用application对象来处理各种事件
比如处理开始请求事件:
application.BeginRequest += new EventHandler(application_BeginRequest);
再编写自己的application_BeginRequest方法即可(注意委托的定义).
Dispose 处置由实现 IHttpModule 的模块使用的资源(内存除外)。