动态添加HttpModules和HttpHandlers

时间:2010-03-26 05:41:37

标签: asp.net-3.5

在运行时从网站添加/删除HttpModules和HttpHandler是个好主意吗? 我正在寻找使我的网站尽可能动态的方法,而无需再次上传更改的内容。像配置文件的东西。 存在规则引擎,但学习它们似乎很痛苦。从我的角度来看,我可能是错的。请建议在运行时更改代码中逻辑的可能方法。

3 个答案:

答案 0 :(得分:7)

ASP.NET 4提供了一个PreApplicationStartMethod功能,可用于以编程方式添加HttpModule。

我刚刚在http://www.nikhilk.net/Config-Free-HttpModule-Registration.aspx上发了一篇博文。

基本思想是创建一个派生的HttpApplication,它提供了在启动时动态添加HttpModule的能力,然后每当在app-domain中创建每个HttpApplication实例时,它就会将它们初始化为管道。

答案 1 :(得分:4)

对于.NET4及更高版本:

要动态安装HttpHandler,您需要创建一个HttpModule包装器来执行此操作。请参阅答案:Any way to add HttpHandler programmatically in .NET?

动态添加http模块:

  

安装包Microsoft.Web.Infrastructure

     

安装包WebActivator

[assembly: PreApplicationStartMethod(typeof(MyPreStartClass), "Start")]

namespace .....
{
    public static class MyPreStartClass
    {
        public static void Start()
        {
            DynamicModuleUtility.RegisterModule(typeof(FooHttpModule));
        }
    }
}

答案 2 :(得分:1)

一种可能的方法是创建一个通用的HTTPHandlerFactory,然后返回请求的处理程序。

查看link以获得更清晰