https://blog.csdn.net/kufeiyun/article/details/7763070
在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文件夹下,自动完成注册
部分信任环境下也可很好的工作