开发者社区> 狼人2007> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

艾伟_转载:浅析IHttpModule和IHttpHandler

简介: 最近开发中涉及到一些使用IHttpModule和IHttpHandler,只是储备不够,抓紧查询MSDN学习了一下,将学习点滴记录一下。 一、IHttpModule 查看这个接口的代码可以发现,它是由两个方法组成: public interface IHttpModule{   void Dispo...
+关注继续查看

最近开发中涉及到一些使用IHttpModule和IHttpHandler,只是储备不够,抓紧查询MSDN学习了一下,将学习点滴记录一下。

一、IHttpModule

查看这个接口的代码可以发现,它是由两个方法组成:

public interface IHttpModule{   void Dispose();   void Init(HttpApplication context); }

看到两个方法及方法标签,就明白这个IHttpModule接口有什么作用了,Init方法中传入了一个HttpApplication参数,它提供对 ASP.NET 应用程序内所有应用程序对象的公用的方法、属性和事件的访问,包括了HttpApplication下的方法、属性和事件的访问。那么具体有那些呢?

image

包括了所有我们经常会用到的一些对象,Application,Context,Event,Modules,Request,Response,Server,Session,Site,User,BeginRequest,EndRequest等等,其中Context中有个一个方法Context.RewritePath可以用来重写URL的,也就是说只要你在App_code中添加一个继承IHttpModule接口的类,并在webconfig中添加此Module后,这个类就可以处理全局的应用程序所有的方法、属性和事件了。

1.针对常用的操作做了一个测试:

image

应用程序将向每个请求的页面上输出这个Module中的内容。

2.针对URL重写测试如下:

image

说明,当有用户请求页面时如果请求路径不包括custom则重写URL,但是这个测试是失败的,正在研究RewritePath这个方法的用法。

二、IHttpHandler

这个接口由一个属性一个方法组成

public interface IHttpHandler{   bool IsReusable { get; }      void ProcessRequest(HttpContext context);    }

IsReusable获取一个值,该值指示其他请求是否可以使用 System.Web.IHttpHandler 实例。

System.Web.HttpContext 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.net之httphandler小记
    本地调试代码遇到的一个问题,没有走URL路由器(UrlReWriter : IHttpHandlerFactory),于是网上科普了一下原理,主要有两点:     1.asp.net在处理http请求时,会由httpmould传递到httphandler,HttpHandlerFactor...
873 0
httphandler和httpmodule的区别
ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pipeline中各个HttpModule的处理,最后将HTML发送到客户端浏览 器中。
773 0
HttpModule和HttpHandler学习
http://zzk.cnblogs.com/s?w=httpModule&p=2http://www.cnblogs.com/stwyhm/archive/2006/08/09/471729.htmlhttp://www.
712 0
IOPS 浅析
决定IOPS的因素主要取决与阵列的算法,cache命中率,以及磁盘个数。阵列的算法因为不同的阵列不同而不同,如我们最近遇到在hds usp上面,可能因为ldev(lun)存在队列或者资源限制,而单个ldev的iops就上不去,所以,在使用这个存储之前,有必要了解这个存储的一些算法规则与限制。
964 0
+关注
狼人2007
个人对技术的追求:代码少而精捍;思路清晰美观;可扩展好维护;技术驱动商业; 人生格言:只要你有信念,有追求,并且坚持,那你一定比随波逐流,行得远行得正...
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载