ASP.NET处理程序和模块(一)

来源:互联网 发布:新速特软件 编辑:程序博客网 时间:2024/05/14 15:05

 

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 的模块使用的资源(内存除外)。