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);
}