关于IHttpModule的相关知识
2014-08-15 00:32
477 查看
using System; namespace System.Web { public interface IHttpModule { // 销毁不再被HttpModule使用的资源 void Dispose(); // 初始化一个Module,为捕获HttpRequest做准备 void Init(HttpApplication context); } }
功能概述:向实现类提供模块初始化和处置事件.它能够截获所有请求,如同windows hook一样.所以你能够利用它做很多你想要做的事情.
必然url重写、大文件上传、sql注入检测......
Asp.net会为每个请求分配一个HttpApplication对象.
二、IIS7、IIS6 web.config注册HttpModule
1)IIS6注册HttpModule<system.web>
<httpModules>
<add name="..." type="MyApplication.RequestDurationLoggerModule, MyApplication"/>
</httpModules>
</system.web>
2)IIS7注册HttpModule
<system.webServer>
<modules>
<add name="..." type="MyApplication.RequestDurationLoggerModule, MyApplication"/>
</modules>
</system.webServer>
三、动态注册
http://www.cnblogs.com/TomXu/p/3756846.html
四、HttpModule的事件
参考:http://www.cnblogs.com/tangself/archive/2011/03/28/1998007.html事件名称 | 功能介绍 |
BeginRequest | 指示请求处理开始 |
AuthenticateRequest | 封装请求身份验证过程 |
AuthorizeRequest | 封装检查是否能利用以前缓存的输出页面处理请求的过程 |
ResolveRequestCache | 从缓存中得到响应时触发 |
AcquireRequestState | 加载初始化Session时候触发 |
PreRequestHandlerExecute | 在Http请求进入HttpHandler之前触发 |
PostRequestHandlerExecute | 在Http请求进入HttpHandler之后触发 |
ReleaseRequestState | 存储Session状态时候触发 |
UpdateRequestCache | 更新缓存信息时触发 |
EndRequest | 在Http请求处理完成的时候触发 |
PreSendRequestHenaders | 在向客户端发送Header之前触发 |
PreSendRequestConternt | 在向客户端发送内容之前触发 |
a、BenginRequest和EndRequest分别是HttpModule容器最开始的和最后的事件;
b、EndRequest之后还会触发PreSendRequestHeaders事件和PreSendRequestContent事件,这不是在HttpModule外的两个事件,表示HttpModule结束,即将开始向Client发送数据。
五、完整的httpmodule运行过程
说明:
a、对于一个HttpModule,在BeginRquest中终止,但是仍然会调用EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。也可以说是直接跳转到EndRequest事件,而不会调用这期间的事件
b、如果有两个HttpModule,在第一个HttpModule的BeginRequest中终止,仅仅不会调用第二个HttpModule的BeginRequest,但仍然会调用两个EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。看下面的图示:
相关文章推荐
- 关于IHttpModule的相关知识总结
- 关于IHttpModule的相关知识总结
- 关于HttpHandler的相关知识总结
- 关于HTTP协议相关知识
- 你必须知道ASP.NET知识------关于动态注册httpmodule(对不起汤姆大叔)
- HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
- HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
- 看了水兄的关于字符串处理的2005方法,很好,就是没看懂,最后把相关知识帖了,放进我的博客里,供自己和大家学习。
- ASP.NET中关于路径(Path)的相关知识
- 关于HttpModule和HttpHandler
- 关于VC++动态链接库的相关知识
- http代理相关知识分析
- 关于HttpModule事件顺序和执行顺序
- 关于HttpModule和HttpHandler
- 关于复制文件出现“Thumbs:访问被拒绝......”的解决办法和相关知识
- 关于HttpModule
- 关于LCD分辨率、色素相关知识介绍
- 网上找的关于http-equiv的知识,以前总是忽视(转)
- [转载]关于Clusters的一些相关知识和名词解释
- 关于HttpModule和HttpHandler