HttpHandler学习总结实例应用-读书笔记

HttpHandler学习总结实例应用-读书笔记

IHttpHandler概述


Framework提供了一系列的接口和类,允许你对于Http请求进行编程,而实现这一操作的一个主要的接口,就是
IHttpHandler(另一个是IHttpModule)。


ISAPI,它根据文件名后缀把不同的请求转交给不同的处理程序。但是仔细看看就会发现:几乎一大半的文件都交给
aspnet_isapi.dll 去处理了。很明显aspnet_isapi.dll 不可能对每种文件采用同一种方式处理,那么aspnet_isapi.dll如何更
进一步处理不同的文件?打开C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\ 目录下的web.config 文
件。


(NOTE:我查阅了很多资料,都说是在
machine.config 中,但实际上
v2.0.50727 下的machine.config中httpHandlers结
点是这样的:<httpHandlers />,并没有给出详细的处理程序,在Web.config中才能看到。而v1.1.4322 下的
machine.config中却有。)

代码:


<httpHandlers>
... ... //略
<add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />


<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />


<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
<add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
... ... //略


</httpHandlers>

在<httpHandlers>结点中将不同的文件类型映射给不同的Handler去处理,对于.aspx来说,是由
System.Web.UI.PageHandlerFactory来处理。而对于.cs来说,是由System.Web.HttpForbiddenHandler 处理,从
ForbiddenHandler名字中出现的Forbidden (翻译过来是“禁止”)可以看出,这个Handler可以避免我们的源码被看到。
(NOTE:System.Web.UI.PageHandlerFactory 是一个IHttpHandlerFactory,而不是一个单一的HttpHandler。)

IHttpHandler的定义:


public interface IHttpHandler{
void ProcessRequest(HttpContext context);//放置我们处理请求的主要代码
bool IsReusable { get; }//该值指示其他请求是否可以使用
IHttpHandler 实例。也就是说后继的Http请求是不是可以

继续使用实现了该接口的类的实例,一般把它设置成true。
}

实现此接口的类形式:


public class CustomHandler : IHttpHandler{
public void ProcessRequest(HttpContext context) {// 处理请求的代码 }
public bool IsReusable { get { return true; } }

}

在应用程序目录下的Web.config中注册它:

<system.web>
<httpHandlers>
<add path="*.jpg" verb="*" type="MyNameSpace.MyClass, MyDllName" />
</httpHa

你可能喜欢

  • http请求
  • 学习心得体会
  • 经典著作
  • 读书笔记大全
  • HTTP协议详解
  • 马列经典
  • 马列主义
  • 读书笔记心得

HttpHandler学习总结实例应用 读书笔记相关文档

最新文档

返回顶部