[英]Is it possible to enable/disable a HttpModule in run-time
有谁知道,如果可以在运行时启用/禁用HttpModule? 通过这个我并不一定意味着它必须从字面上关闭。 我只是希望能够阻止执行BeginRequest代码,然后再过一段时间,以便能够重新启用该代码。 关于如何做到这一点的任何想法?
编辑:有问题的HttpModule拦截了针对一个Web服务的所有请求,并将它们复制到另一个WS。 由于我只想将这种行为用于负载测试,我希望能够在不需要时不需要停止服务就打开/关闭它,手动编辑web.config并重新启动服务。 HttpModule类位于WS端。
您可以使用应用程序参数作为标志,并在BeginRequest中检查其值(第一件事)。 就像是:
public class Global : HttpApplication
{
protected bool myFlag;
//....
protected internal void Application_BeginRequest(object sender, EventArgs e)
{
if (!myFlag) return;
// ....
}
}
可以在不使用PreApplicationStartMethod属性和Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule方法注册的情况下加载httpmodule 。
与在init方法中一样,您通过将回调方法添加到应用程序事件来订阅BeginRequest。 在这种情况下,您应该能够取消订阅活动。 我想这样的代码应该可行。
application.BeginRequest - =(new EventHandler(this.Application_BeginRequest));
在需要时,您可以使用再次添加回调事件
application.BeginRequest + =(new EventHandler(this.Application_BeginRequest));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.