关于IHttpModule的相关知识总结
2014-08-14 19:47
543 查看
一、IHttpModule相关概述
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>
三、动态注册
/article/1307954.html四、HttpModule的事件
参考:/article/6648843.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的相关知识总结
- 关于QT自定义控件(Custom Widget)相关知识总结
- HTTP相关知识总结
- 【经验总结】Http,网页访问,HttpRequest,HttpResponse相关的知识
- Apache(HTTP)服务相关知识总结(一)
- HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
- 关于form与表单元素的相关知识总结
- NetWork——关于HTTP、HTTPS的知识总结(以及Android网络优化建议)
- iOS http网络请求相关知识总结
- 关于Struts2的相关知识总结及应用
- 【转载总结】关于泛型基类的相关知识
- 你必须知道ASP.NET知识------关于动态注册httpmodule(对不起汤姆大叔)
- 总结:关于Sizeof的相关知识
- NetWork——关于HTTP、HTTPS的知识总结
- 关于Redis的相关知识个人总结
- HTTP协议知多少-关于http1.x、http2、SPDY的相关知识
- http的相关的知识总结
- 关于HTTP协议相关知识