当前位置:中国站长下载文章中心网页编程.NET编程 → ASP.Net中自定义Http处理及应用之HttpHandler篇(3)

ASP.Net中自定义Http处理及应用之HttpHandler篇(3)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 8:39:56
     选择配置,弹出应用程序配置对话框,将".foo"添加到应用程序映射中,如图4:
  
  图4:添加应用程序映射
  好了,我们现在可以在项目中添加一个.foo文件,当向该文件发送请求时,浏览器显示:
  This is my handler
  
  
  
  而对其他ASPX文件的访问不受影响。
  实现Handler Factory
  实现HttpHandler功能的另外一个选择是实现一个Handler Factory,这是通过实现IHttpHandlerFactory接口来实现的。 IHttpHandlerFactory接口的定义如下:
  interface IHttpHandlerFactory
  {
  IHttpHandler GetHandler(HttpContext ctx,
  string requestType,
  string url,
  string pathTranslated);
  void ReleaseHandler(IHttpHandler handler);
  }
  
  
  
  GetHandler方法在请求开始的时候被调用,而ReleaseHandler在请求结束,所有的Handler都不再需要的时候被调用。 使用HttpHandlerFactory的过程一般如下: 首先定义实际处理HttpHandler的类,这个类会在HandlerFactory中被调用以进行实际的处理:
  public class BasicHandler : IHttpHandler { ... }
  
  
  
  然后,定义自己的HandlerFactory:
  public class BasicHandlerFactory : IHttpHandlerFactory
  {
  public IHttpHandler GetHandler(HttpContext ctx,
  string requestType,
  string url,
  string pathTranslated)
  {
  return new BasicHandler();
  }
  public void ReleaseHandler(IHttpHandler handler) {}
  }
  
  
  
  最后,在Web.Config文件中注册这个Factory:
  <configuration>
  <system.web>
  <httpHandlers>
  <add verb="POST" path="*.foo"
  type="MyNamespace.BasicHandlerFactory, MyAssembly" />
  </httpHandlers>
  </system.web>
  </configuration>
  
  异步Handler
  通过实现IHttpAsyncHandler可以实现对HTTP请求的异步处理。IHttpAsyncHandler接口继承IHttpHandler,也需要实现ProcessRequest 方法和 IsReusable 属性,同时,需要实现 BeginProcessRequest 和 EndProcessRequest 方法。BeginProcessRequest 启动异步调用以处理单个的 HTTP 请求,而 EndProcessRequest 则在该进程结束时执行清理代码。 IHttpAsyncHandler的实现和注册同IHttpHandler类似,读者可以参考MSDN的相关文档。 现在,大家是否对HTTP Handler的概念和应用有了一定的了解?在下一篇文章中,我们将主要介绍HTTP Module的的应用,并给出使用HttpModule实现权限系统的实例。  
  
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。