不通过web.config在运行时注册httpmodules

22 篇文章 0 订阅

原文:http://blog.davidebbo.com/2011/02/register-your-http-modules-at-runtime.html

在asp.net4 中,我们知道可以不用任何配置让一个方法在appdomain中尽早执行,在上篇文章中已经实现,非常简单,只用定义一个class:

 
 
 
public class PreApplicationStartCode {
public static void Start() {
     // Your startup code here
}
}

然后添加一个程序集级别属性指向它:

 
[assembly: PreApplicationStartMethod( typeof (PreApplicationStartCode), "Start" )]
随着MVC3和asp.net web pages的发布,还有另外一个不用配置文件而是程序动态注册HttpModule的好方法:RegisterModule()API,可悲的是,这个方法隐藏太深,很少用到并且也很难发现(这个API下个版本有可能会被清除掉)

结合两种技术,就可以随心所欲的动态注册module了

 
 
 
public class PreApplicationStartCode {
public static void Start() {
     // Register our module
     Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule( typeof (MyModule));
}
}

呵呵,是不是藏得很深啊

传入的参数类型就是标准的IHttpModule,例如

 
 
class MyModule : IHttpModule {
public void Init(HttpApplication context) {
     context.BeginRequest += (sender, e) => {
         var response = ((HttpApplication)sender).Response;
         response.Write( "MyModule.BeginRequest" );
     };
}
  
public void Dispose() { }
}

这个方法的优点就是:你可以创建一个封装好的程序集,编译好后把放到一个web app的bin文件夹下,自动完成注册

部分信任环境下也可很好的工作

代码可以从此下载  代码  或者 代码.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值