繁体   English   中英

是否可以在运行时启用/禁用HttpModule

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM