httphandler是做什么的?用任何一个搜索引擎都可以找到一大堆资料,我就不多说了,把我今天学习的一些认识写在这里,希望可以从另一个侧面让大家认识httphandler。
所谓httphandler,其实是.net用来处理页面请求的。大家可以想想,forms验证所能保护的只是.aspx后缀的文件,而.config后缀的文件是不可访问的。所有这些都是由asp.net内置的一些httphandler处理的。而我们之所以要学习使用httphandler,主要是因为我们想自己来处理一些http请求。
从google上搜索"httphandler .net",大概搜到的httphandler的用途有:
1.防止盗链。主要是防止图片的盗链。
2.使用url重写。这个我还没有仔细看,大概的意思就是可以使Url转向正确的地址,比如说把很长的url变短,使不存在的url转到提示错误或默认的地址。
3.执行一些短小方便的作用。比如有的文章说使用httphandler来实现注销功能。
4.等等等等
作为asp.net的http处理的核心之一,httphandler的作用自然不止这些。我最近要学httphandler主要是因为我找的工作(要毕业了,Hoho...)要使用这个来处理自定义的后缀名的文件,形如http://localhost/hello.notus这样的网页,站内所有页面的后缀名都使用.notus,为的是使用自定义的页面生成方法(主要是在生成页面的时候使用了xml+xslt)。
上面说了一些httphandler的作用,下面把今天学习的内容下下来,我敢说下面肯定有你需要的东西,因为这个东西我是好久才悟出来的(什么,大家当时一看就知道了?难道我真的是最笨的?)
查阅.net sdk 文档,你会发现有IHttpHandler和IHttpHandlerFactory,前面的是自定义httphandler所需要实现的接口,后面的是是自定义返回httphandler的工厂所需要实现的接口,这两个东西在web.config中的注册方法都是一样的。对于前者,很好理解,那后面的工厂是做什么的?
答案自然是返回一个httphandler(……)。
返回的httphandler是做什么的?
答案是用来处理当前的http请求。
既然都是处理当前的http请求,那为什么不直接用IHttpHandler?
不知道。
工厂是什么?
是工厂模式吧?
工厂模式是做什么的?
可以根据客户需要返回合适的产品。
那IHttpHandlerFactory的作用是什么?
嗯,根据当前的http请求返回合适的HttpHandler。
看到了吧,就是这个意思哦。比如说要对http://localhost/hello.notus这个url进行特别的处理,那当请求这个Url时,工厂就单独返回处理hello的HttpHandler,而是其它的url时,就返回一个通用的HttpHandler
下面是简单的代码示例:
System.Web.IHttpHandler GetHandler(System.Web.HttpContext context, string requestType, string url, string pathTranslated)
{
//文件的全名
string fname=url.Substring(url.LastIndexOf("/")+1);
//文件名
string cname=fname.Substring(0,fname.IndexOf("."));

//根据需要返回合适的HttpHandler
if(cname=="hello")
return new HandlerHello();
else
return new HandlerCommon();
}

转载于:https://www.cnblogs.com/yzxchoice/archive/2006/09/27/515988.html

认识httphandler相关推荐

  1. ASP.NET的(HttpModule,HttpHandler)

    在以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为inetinfo.exe进程所截获,这个进程实际上就是www服务.截获之后它会将这个请求转交给asp.dll进程 ...

  2. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

    学习整理了一下 (一).功能 用HttpHandler实现图片验证码 (二).代码如下 1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHan ...

  3. HttpModule与HttpHandler详解

    ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll, ...

  4. ashx文件和HttpHandler

    ashx 文件用于写web handler的..ashx必须包含IsReusable. 如下例所示.}.ashx比.aspx的好处在与不用多一个html 注意了VS2005中Web应用程序项目模板里的 ...

  5. HttpHandler与HttpModule区别

    ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pi ...

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

    摘自:http://hi.baidu.com/irinihp/blog/item/c96a011ea1f78ff31ad576f8.html 很多时候,我们新建一个xxx.aspx页和xxx.aspx ...

  7. 选择HttpHandler还是HttpModule?

    阅读目录 开始 理解ASP.NET管线 理解HttpApplication 理解HttpHandler 理解HttpModule 三大对象的总结 案例演示 如何选择? 最近收到几个疑问:HttpHan ...

  8. HttpModule与HttpHandler详解(转)

    一 asp.net请求的处理过程 ------------------- HttpModule必须要掌握的东西 HttpHandler 必须要掌握的东西,非常有用 以上两个的实例 ---------- ...

  9. 理解并自定义HttpHandler

    前言 之前从网上找了几篇讲解如何自定义HttpHandler的文章,依葫芦画瓢却一直没成功过.经过上一篇<asp.net管道模型(管线模型)之一发不可收拾>的总结,对管道模型和请求/响应过 ...

  10. 5 HttpHandler

    HttpHandler是定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定,是对请示的响应,可以输出普通的html内容,也可以输入图片或文件(下载也可) ...

最新文章

  1. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
  2. 【收藏】SonarQube-插件-离线安装PMD+阿里P3C
  3. python坐标轴刻度设置_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
  4. c++详解【智能指针】
  5. 前端学习(955):移动端特效导读
  6. 何小鹏发文力挺李斌:2019年最惨的人
  7. Realme XT发布会PPT曝光:后置6400万四摄+骁龙712
  8. 开发工具 - Reflector
  9. TYVJ1467 通往聚会的道路
  10. matlab改变示波器颜色,[转载]matlab/simulink 示波器颜色设置
  11. ffmpeg filter 实现画面旋转
  12. Flask:an ImportError was raised问题解决
  13. 财税打印机LQ 670K+ win10驱动
  14. Maven查看当前生效配置、pom、环境变量等命令(mvn help用法)
  15. OPPO员工年薪税后110万,租七百块农民房,被女友数落:太抠了!
  16. 母牛的故事——无脑模拟解法
  17. Java高并发秒杀系统【观后总结】
  18. Kubernetes一致性认证
  19. OpenCV图像处理知识点梳理
  20. 如何成为一位Unity3D游戏开发者:对游戏开发抱有热情

热门文章

  1. 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
  2. 【正一专栏】内马尔留不留下都已经是伤痕累累
  3. 机器学习笔记(十三)半监督学习
  4. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历(java实现)
  5. idea 开发 maven 项目
  6. Jquery判断元素是否隐藏:display属性状态值
  7. Python 图像处理 - 用PIL库提取图片中的颜色并展示为色谱实例演示,RGB颜色排序方法
  8. C语言用DFS实现找到图的所有路径(邻接矩阵实现)
  9. 打开和关闭mysql服务的两种方法
  10. 第三周项目4顺序表应用2 删除元素在[x,y]之间的所有元素