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

时间:2011-12-13 07:21:24

标签: c# asp.net runtime httpmodule

有没有人知道,是否可以在运行时启用/禁用HttpModule?通过这个我并不一定意味着它必须从字面上关闭。我只是希望能够阻止执行BeginRequest代码,然后再过一段时间,以便能够重新启用该代码。关于如何做到这一点的任何想法?

编辑:有问题的HttpModule拦截了针对一个Web服务的所有请求,并将它们复制到另一个WS。由于我只想将这种行为用于负载测试,我希望能够在不需要时不需要停止服务就打开/关闭它,手动编辑web.config并重新启动服务。 HttpModule类位于WS端。

3 个答案:

答案 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));