asp.net 制作过滤器原理:重写ASP.net管道事件
1.通过HttpApplicationFactory创建一个HttpApplication对象,负责处理整个请求。
2.调用ProcessRequest(HttpContext context)执行19个委托对象(请求管道)
过滤器分为两种:
1.调用外部程序集(本次自己做一个程序集)
1.1.过滤器程序集代码要实现System.Web.IHttpModule接口
public class MyModule:System.Web.IHttpModule { public void Init(System.Web.HttpApplication app) { app.BeginRequest += app_BeginRequest; } void app_BeginRequest(object sender, EventArgs e) { System.Web.HttpApplication app = sender as System.Web.HttpApplication; app.Context.Response.Write("哇哈哈哈哈~~~~~~~~~~~!"); } public void Dispose() { } }
1.2.把过滤器程序集放到开发网站的目录中,并添加到【引用】中。
1.3.配置web.config
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <!--IIS应用池 中 集成模式--> <system.webServer> <modules> <!--<add name="aa" type="程序集类的全名称,程序集名"/>--> <add name="aa" type="P02ThirdModule.MyModule,P02ThirdModule"/> </modules> </system.webServer> </configuration>
2.系统内容过滤(通过global 利用事件自动注册机制)
//--- 利用 事件自动注册机制 来 为 当前网站的 HttpApplicaiton里的 事件 注册方法 ---------------- //管道事件方法 的 命名规则 :一定 以 Application_事件名 protected void Application_BeginRequest(object sender, EventArgs e) { System.Web.HttpApplication app = sender as System.Web.HttpApplication; //app.Context.Response.Write("本网站的 Global 中 自动添加的方法 ~~~~~~~~~~~!"); FakeStaticProcess(app); }