精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>asp.net教程>正文

Asp.Net 构架(IHttpHandler) - Part.2


来源:博客圆 时间:07-10-11 点击: 点击这里收藏本文
IHttpHandlerFactory 概述
现在假设我们有这样的需求,我们不仅想要处理 .rss 后缀名,还想要能够处理 .atom后缀名,假设处理atom的类命名为AtomHandler,那么我们的Web.config该如何设置呢?我想应该是这样的:

<httpHandlers>

<add path="*.rss" type="RssFeadsLib.RSSHandler" verb="GET" />

<add path="*.atom" type="RssFeadsLib.AtomHandler" verb="GET" />

</httpHandlers>

如果我们有很多个HttpHandler分别映射不同后缀名的请求,这样我们的Web.config会变得很冗长,或者,我们只有在程序运行时才能确切地知道使用哪个Handler,这个时候,可以考虑实现 IHttpHandlerFactory来完成这一过程。

IHttpHandlerFactory的定义是这样的:

public interface IHttpHandlerFactory{

    IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated);

    void ReleaseHandler(IHttpHandler handler);

}

可见,需要实现两个方法,分别是 GetHandler() 和 ReleaseHandler()。

l       GetHandler(),返回实现了IHttpHandler接口的类的实例。

l       ReleaseHandler(),使得Factory可以重复使用一个已经存在的Handler实例。

对于上面 .atom 和 .rss 的问题,我们可以这样来实现 IHttpHandlerFactory接口:

class HandlerFactory:IHttpHandlerFactory{

    public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated){

         string path = context.Request.PhysicalPath;

         if (Path.GetExtension(path) == ".rss"){

             return new RSSHandler();

         }

 

         if (Path.GetExtension(path) == ".atom"){

             return new ATOMHandler();

         }

         return null;

    }

 

    public void ReleaseHandler(IHttpHandler handler){

    }

}

这时,在Web.Config 中<system.web>节点下进行如下设置即可:

<httpHandlers>

<add path="*.rss,*.atom" type=" RssFeadsLib.HandlerFactory" verb="GET" />

</httpHandlers>

但是,这不能简化IIS中ISAPI的设置,还是需要手动去对.rss和.atom分别设置。

总结
在本文中,我们首先讨论了aspnet_isapi.dll 如何将对不同后缀名文件的请求分发给相应的处理程序,如何查看Framework默认的处理程序Handler。

然后,我们通过三个实例,图片防盗链、图片验证码、处理自定义后缀名请求,详细讲解了IHttpHandler的实现方法和使用过程。

最后,我向大家概要地介绍了IHttpHandlerFactory接口。

    希望这篇文章能给你带来帮助。

系列导航
l       Asp.Net 构架与安全机制(Http请求处理流程) – Part.1

9 7 3 1 2 3 4 5 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.