是否有可能在运行时启用/禁用HttpModule ?
本文关键字:禁用 HttpModule 启用 有可能 运行时 是否 | 更新日期: 2023-09-27 18:17:45
有人知道,如果有可能在运行时启用/禁用HttpModule吗?我这么说并不是说它必须完全关闭。我只是想能够阻止BeginRequest代码被执行,然后再一次,过了一段时间,能够重新启用那个代码。有什么办法吗?
编辑:问题中的HttpModule拦截了针对一个web服务的所有请求,并将它们复制到另一个WS。因为我只希望这种行为用于负载测试,我希望能够在不需要的时候打开/关闭它,而不必停止服务,手动编辑web。配置并重新启动服务。
可以加载httpmodule而不用使用PreApplicationStartMethod属性和Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule方法。
你可以使用一个应用参数作为标志,并在BeginRequest中检查它的值(第一件事)。比如:
public class Global : HttpApplication
{
protected bool myFlag;
//....
protected internal void Application_BeginRequest(object sender, EventArgs e)
{
if (!myFlag) return;
// ....
}
}
在init方法中,通过将回调方法添加到应用程序事件中来订阅BeginRequest。在这种情况下,您应该能够取消订阅事件。我想这样的代码应该可以工作。
应用程序。BeginRequest -= (new EventHandler(this.Application_BeginRequest));
当需要时,您可以使用
再次将回调添加到事件中应用程序。BeginRequest += (new EventHandler(this.Application_BeginRequest));