动态注册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,有兴趣可以去看源码。

 

作者: Shpix 发表于 2011-08-01 18:42 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"