(轉)不經過web.config在運行時註冊httpmodules

https://blog.csdn.net/kufeiyun/article/details/7763070web

在asp.net4 中,咱們知道能夠不用任何配置讓一個方法在appdomain中儘早執行,在上篇文章中已經實現,很是簡單,只用定義一個class:app

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

而後添加一個程序集級別屬性指向它:asp.net

 
[assembly: PreApplicationStartMethod( typeof (PreApplicationStartCode), "Start" )]
隨着MVC3和asp.net web pages的發佈,還有另一個不用配置文件而是程序動態註冊HttpModule的好方法:RegisterModule()API,可悲的是,這個方法隱藏太深,不多用到而且也很難發現(這個API下個版本有可能會被清除掉)

結合兩種技術,就能夠爲所欲爲的動態註冊module了dom

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

呵呵,是否是藏得很深啊post

傳入的參數類型就是標準的IHttpModule,例如google

 
 
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文件夾下,自動完成註冊spa

部分信任環境下也可很好的工做.net

代碼能夠今後下載  代碼  或者 代碼.code

相關文章
相關標籤/搜索