天天加油 - 助您成才
ASP.Net中自定义Http处理及应用之HttpHandler篇
您正在看的.Net是:ASP.Net中自定义Http处理及应用之HttpHandler篇。
在开发基于Microsoft IIS的应用时,开发者除了可以编写ASP程序外,还可以使用Visual C++等开发工具,开发ISAPI应用,以获取更为强大的功能。可以编写两种ISAPI扩展:一种是ISAPI Server Extention,另一种是ISAPI Filter,但是,ISAPI扩展应用的编写通常对开发者有比较高的要求,开发和部署的难度比较大。 在开发ASP.Net应用时,我们仍然可以编写ISAPI应用,以扩充IIS的功能,但是,ASP.Net为我们提供了另外一种选择——使用HTTP Handler 和HTTP Module。这是通过使用IHttpHandler 和 IHttpModule接口来实现的。HTTP Handler提供了类似于ISAPI Server Extention的功能,而HttpModule实现了类似于ISAPI Filter的功能,并且,比ISAPI,在开发和部署上都要简单的多。 应用HttpHandler和HttpModule,使应用程序可以与IIS Web服务器的低级别请求和响应服务交互。本文首先介绍HttpHandler和HttpModule的概念和基本使用方法,并介绍了一个应用HttpModule实现权限系统的案例。 HTTP 处理管道的基本模型 要对HttpModule和IHttpHandler进行研究,必须先对ASP.Net的处理管道有一个了解。 在ASP.Net应用程序中,系统使用一组相关的类,通过一定的顺序来处理客户端的请求(Request),ASP.NET应用程序的处理模式可称之为HTTP处理管道。HttpModule和IhttpHandler就是这个处理管道上的两个处理环节。 HTTP处理管道中的类在System.Web名称空间中定义,主要有以下类型: · HttpWorkerRequest 抽象类定义了ASP.Net页面处理请求的基本方法; · HttpRuntime 提供了处理应用的一组服务; · HttpContext 保存了处理一次请求的所有相关上下文信息; · HttpApplicationFactory 提供相关目录的应用程序; · HttpApplication 定义了所有ASP.Net应用程序的通用的方法、属性和事件。这个类也是在用户在global.asax文件中定义的应用的基类; · Modules 处理请求前和响应后的事件; · HandlerFactories 提供应用程序中的Handlers; · Handlers 处理请求和响应。 HTTP处理管道的模型如下: 图1:HTTP 处理管道 在Windows平台上,HTTP Pipline需要IIS的支持。为了运行ASP.NET应用,IIS需要以下两个文件:ASPNET_ISAPI.DLL和ASPNET_WP.EXE · ASPNET_ISAPI.DLL是一个ISAPI Extention他将发向IIS的请转交ASPNET_WP.EXE处理 · ASPNET_WP.EXE使用HttpRuntime对请求进行具体处理 处理的过程可以用图表示如下: 图2:IIS上的HTTP处理管道   HttpHandler的实现 HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现IHttpHandler接口来达到。实际上,我们在编写ASP.Net页面时,ASP.Net页面所继承的基类——System.Web.UI.Page——也实现了HttpHandler接口,也是一个HttpHandler,看一下它的定义就知道了(C#): public class Page : TemplateControl, IhttpHandler   接口IHttpHandler的定义如下: interface IHttpHandler { void ProcessRequest(HttpContext ctx); bool IsReuseable { get; } }   接口中ProcessRequest是添加自己的代码,进行相应处理的地方。IsReuseable属性指明该HttpHandler的实现类是否需要缓存。 下面的示例展示了HttpHandler的基本使用: 1、建立一个名为MyNameSpace的工程,添加一个类,名称为MyHandler,代码如下: 例1: namespace MyNameSpace { public class MyHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { HttpResponse Response Response.Write(This is my handler);} public bool IsReusable { get { return true; } } } }   2、将上面的代码编译,生成MyNameSpace.Dll文件; 3、建立一个新的WebApplication项目,或打开一个WebApplication项目,将文件MyNameSpace.Dll添加到项目的引用中,或复制到项目的bin目录下; 4、修改Web.Config,添加如下内容: <configuration>       <system.web>    <httpHndlers> <add verb=* path=*.aspx type= MyNameSpace.MyHandr, MyNameSpace />       </httpHndlers> </system.web> </configuration>   配置文件中的选项说明: · verb可以是GET或POST,表示对GET或POST的请求进行处理。*表示对所有请求进行处理。 · Path指明对相应的文件进行处理,*.aspx表示对发给所有ASPX页面的请求进行处理。可以指明路径,如/test/*.aspx,表明只对test目录下的ASPX文件进行处理。 · Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。 现在,请求项目中的任何ASPX页面,页面上显示的始终只有如下一行字: This is my handler   因为,我们自定义的Handler截获了所有发向ASPX页面的请求,并且用自己的的方法来处理这些请求了。 为了使我们的ASPX页面能够顺利运行,我们需要修改Web.Config文件: <configuration>        <system.web>    <httpHndlers> <add verb=* path=*.foo type= MyNameSpace.MyHandr,hander />       </httpHndlers> </system.web> </configuration>   为了让对后缀名为.foo的文件的请求能够被我们的

排行

  1. 用photoshop把照片变为卡通漫画
  2. C#版的网站新闻发布系统
  3. ASP.NET窗体对话框的实现
  4. ASP.NET中使用IFRAME建立类Modal
  5. 给Asp.Net初学者的关于继承和多态
  6. 在ASP.NET中上传图片并生成缩略图
  7. ASP.NET程序中用Repeater实现分页
  8. 用asp.net还原与恢复sqlserver数
  9. 为ASP.NET封装的SQL数据库访问类
  10. 用ASP.Net(C#)连接Oracle数据库的
  11. ASP.NET系统用户权限设计与实现
  12. 在asp.net中为Web用户控件添加属
  13. ASP.NET对IIS中的虚拟目录进行操
  14. ASP.NET中利用cookies保持客户端
  15. ASP.NET下MVC设计模式的实现
  16. Asp.net+Xml实现无数据库论坛一点
  1. C#版的网站新闻发布系统
  2. ASP.NET窗体对话框的实现
  3. 在VB.NET中使用MS Access存储过程
  4. ASP.NET中使用IFRAME建立类Modal
  5. 给Asp.Net初学者的关于继承和多态
  6. 在ASP.NET中上传图片并生成缩略图
  7. ASP.NET程序中用Repeater实现分页
  8. 用asp.net还原与恢复sqlserver数
  9. 为ASP.NET封装的SQL数据库访问类
  10. 用ASP.Net(C#)连接Oracle数据库的
  11. 保存图片流到数据库之后固定显示
  12. ASP.NET系统用户权限设计与实现
  13. 在asp.net中为Web用户控件添加属
  14. ASP.NET对IIS中的虚拟目录进行操
  15. ASP.NET中利用cookies保持客户端
  16. ASP.NET下MVC设计模式的实现
  1. C#版的网站新闻发布系统
  2. ASP.NET窗体对话框的实现
  3. 在ASP.NET中上传图片并生成缩略图
  4. ASP.NET程序中用Repeater实现分页
  5. 用asp.net还原与恢复sqlserver数
  6. 为ASP.NET封装的SQL数据库访问类
  7. 用ASP.Net(C#)连接Oracle数据库的
  8. ASP.NET系统用户权限设计与实现
  9. 在asp.net中为Web用户控件添加属
  10. ASP.NET对IIS中的虚拟目录进行操
  11. ASP.NET中利用cookies保持客户端
  12. ASP.NET下MVC设计模式的实现
  13. Asp.net+Xml实现无数据库论坛一点
  14. ASP.NET编程中的十大技巧
  15. TreeView使用笔记
  16. 用PS+IR制作翻页动画

最近更新

  • 推荐阅读
  • .Net《ASP.Net中自定义Http处理及应用之HttpHandler篇》ASP.Net中自定义Http处理及应用之HttpHandler篇
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM