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