動態註冊HttpModule使我們使用自訂的HttpModel時候不在需在設定檔裡配置HttpModel,避免過多的配置出錯情況。讓我們來看看如何?動態註冊HttpModule.
First,我們實現自訂的HttpModel
public class CustomModule : IHttpModule
{
public void Dispose()
{
//nothing to do here
}
public void Init(HttpApplication context)
{
context.BeginRequest += (sender, e) => ProcessCookie((HttpApplication)sender);
}
}
}
Second,建立一個靜態類,並命名為PreApplicationStartCode,並增加一個靜態方法PreStart()
public class PreApplicationStartCode
{
private static bool _isStarting;
public static void PreStart()
{
if (!_isStarting)
{
_isStarting = true;
//注意這裡的動態註冊,此靜態方法在Microsoft.Web.Infrastructure.DynamicModuleHelper
DynamicModuleUtility.RegisterModule(typeof(CustomModule));
}
}
}
Note.這裡的類名官方裡面建議用PreApplicationStartCode,我沒測試過,大家可以測試下用其他類名
Three,在Properties/AssemblyInfo.cs裡面註冊
[assembly: PreApplicationStartMethod(typeof(MyTest.PreApplicationStartCode), "PreStart")]
通過這三步,你的HttpModule就不在需要為每個應用程式去配置了,這種方式比較適合開發組件DLL的時候,需要註冊HttpModule的情況,微軟的Asp.net MVC3裡都是使用的動態HttpModule,有興趣可以去看源碼。