重写HttpModule机制
最近因为用SlickUpload,它做上传效果确实很拉风,功能也很强。但由于付费,使用之后一直有个div层显示,并且往它的官网上重定向。所以就萌发了重写HttpModule机制的想法。
熟悉Asp.Net的朋友都应该知道HttpModule,它是处理客户端请求中很重要的一个环节。所有客户端的请求都必须
通过它进行一些前期处理后,再由它交给HttpHandler进行最终处理。HttpHandler调用ProcessRequest()方对http请求进行处理,处理完成以后完成以后,再交给HttpModule,然后再由HttpModule将处理完的Http请求信息转交给客户端。处理流程如下图:
图1:Http请求到达HttpRuntime:
图2:HttpModule与HttpHandler处理流程:
整个Http请求处理流程为:HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->HttpPipeline-->ASPNET_WP.EXE-->
HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()。
HttpModule的工作原理:监听HttpRequest请求,同时对HttpRequest增添或者过滤一些内容。HttpModule实现了IHttpModule接口。重写HttpModule的实现即设计一个现实了IHttpModule接口的类。IHttpModule接口包括两个方法:1、Dispose()。2、Init()。具体代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Web; 6 7 namespace HttpModules 8 { 9 public class ValidaterHttpModuleEvents : IHttpModule10 {11 #region IHttpModule 成员12 13 public void Dispose()14 {15 throw new NotImplementedException();16 }17 18 public void Init(HttpApplication context)19 {20 21 context.BeginRequest += new EventHandler(Application_BeginRequest);22 context.EndRequest += new EventHandler(context_EndRequest);23 }24 25 void context_EndRequest(object sender, EventArgs e)26 {27 HttpContext.Current.Response.Write("ValidaterHttpModuleEvents EndRequest </br>");28 }29 30 #endregion31 32 void Application_BeginRequest(object sender, EventArgs e)33 {34 35 HttpApplication application = sender as HttpApplication;36 application.CompleteRequest();37 //HttpContext.Current.Response.Redirect("http://www.163.com");38 application.Context.Response.Write("ValidaterHttpModuleEvents Begin Request </br>");39 40 41 }42 }43 }
<
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>
今日头条
更多>>您可能感兴趣的文章
- .NET简谈设计模式之(装饰者模式性能问题?)
- ASP.ENT前台更改绑定数据的日期格式
- C#高级编程:使用XPath命名空间中的类[2]
- Asp.net MVC源码分析--UrlRoutingModule与Service location的
- 让asp.net mvc的Action支持jQuery直接提交的javascript对
- 使用HttpWebRequest下载经过重定向的文件
- .Net插件框架的实现及分析(二)
- DCOM--高效率主从服务器程序的新概念
- Add View -> Strongly-typed view ->Model Class
- .NET类库中发现设计模式:策略模式



