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协议详解
- 马列经典
- 马列主义
- 读书笔记心得
- 经济学十大经典著作2页
- 西方经济学经典著作11页
- 西方思想家经典著作选读6页
- C语言经典著作2页
- 西方法学经典著作53页
- 马克思主义经典著作选读7页
- 争先创优读书笔记大全——20篇7页
- 初中读书笔记大全8页
- 读书笔记大全11页
- Excel2007VBA参考大全ver0.0 读书笔记25页
- 大学生读书笔记大全11页
- 读书笔记大全8页
- HTTP协议详解12页
- HTTP协议的头信息详解16页
- HTTP协议报头信息详解6页
- HTTP协议详解25页
- HTTP协议详解(博客园)24页
- HTTP协议详解17页
- 马列经典1页
- 马列经典班会总结--艺设一班吴育峰6页
- 马列经典原著宣读4页
- 国企学习马列经典读书心得总结4页
- 马列经典18页
- 马列主义经典著作感想4页


