【发布时间】:2011-02-01 01:18:50
【问题描述】:
在运行时从网站添加/删除 HttpModules 和 HttpHandlers 是个好主意吗? 我正在寻找使我的网站尽可能动态的方法,而无需重新上传更改的内容。类似配置文件的东西。 规则引擎存在,但学习它们似乎很痛苦。我的观点可能是错误的。请提出在运行时更改代码逻辑的可能方法。
【问题讨论】:
标签: asp.net-3.5
在运行时从网站添加/删除 HttpModules 和 HttpHandlers 是个好主意吗? 我正在寻找使我的网站尽可能动态的方法,而无需重新上传更改的内容。类似配置文件的东西。 规则引擎存在,但学习它们似乎很痛苦。我的观点可能是错误的。请提出在运行时更改代码逻辑的可能方法。
【问题讨论】:
标签: asp.net-3.5
一种可能的方法是创建一个通用的 HTTPHandlerFactory,它反过来返回请求的处理程序。
查看link 了解更多信息
【讨论】:
ASP.NET 4 提供了 PreApplicationStartMethod 功能,可用于以编程方式添加 HttpModules。
我刚刚在 http://www.nikhilk.net/Config-Free-HttpModule-Registration.aspx 上写了一篇博客文章。
基本思想是您创建一个派生的 HttpApplication,它提供了在启动时动态添加 HttpModules 的能力,然后每当在应用程序域中创建每个 HttpApplication 实例时,它都会将它们初始化到管道中。
【讨论】:
.NET4 及以上版本:
为了动态安装 HttpHandler,您需要创建一个 HttpModule 包装器来执行此操作。查看答案:Any way to add HttpHandler programmatically in .NET?
动态添加http模块:
安装包 Microsoft.Web.Infrastructure
Install-Package WebActivator
[assembly: PreApplicationStartMethod(typeof(MyPreStartClass), "Start")]
namespace .....
{
public static class MyPreStartClass
{
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(FooHttpModule));
}
}
}
【讨论】: