有没有人知道,是否可以在运行时启用/禁用HttpModule?通过这个我并不一定意味着它必须从字面上关闭。我只是希望能够阻止执行BeginRequest代码,然后再过一段时间,以便能够重新启用该代码。关于如何做到这一点的任何想法?
编辑:有问题的HttpModule拦截了针对一个Web服务的所有请求,并将它们复制到另一个WS。由于我只想将这种行为用于负载测试,我希望能够在不需要时不需要停止服务就打开/关闭它,手动编辑web.config并重新启动服务。 HttpModule类位于WS端。
答案 0 :(得分:1)
您可以使用应用程序参数作为标志,并在BeginRequest中检查其值(第一件事)。类似于:
public class Global : HttpApplication
{
protected bool myFlag;
//....
protected internal void Application_BeginRequest(object sender, EventArgs e)
{
if (!myFlag) return;
// ....
}
}
答案 1 :(得分:1)
load httpmodule without registering可以使用PreApplicationStartMethod属性和Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule方法。
答案 2 :(得分:0)
与init方法一样,您通过将回调方法添加到应用程序事件来订阅BeginRequest。在这种情况下,您应该能够取消订阅活动。我想这样的代码应该有用。
application.BeginRequest - =(new EventHandler(this.Application_BeginRequest));
如果需要,您可以使用
再次添加回调事件application.BeginRequest + =(new EventHandler(this.Application_BeginRequest));