Можно ли включить / отключить HttpModule во время выполнения - PullRequest
0 голосов
/ 13 декабря 2011

Кто-нибудь знает, можно ли включить / отключить HttpModule во время выполнения? Под этим я не обязательно подразумеваю, что он должен быть выключен буквально. Я просто хотел бы иметь возможность предотвратить выполнение кода BeginRequest, а затем через некоторое время снова включить этот код. Есть идеи как это сделать?

EDIT: рассматриваемый модуль Http перехватывает все запросы, предназначенные для одного веб-сервиса, и копирует их в другой WS. Так как я хочу использовать это поведение только для нагрузочного тестирования, я хочу иметь возможность включать / выключать его, когда в этом нет необходимости, без необходимости останавливать службу, вручную редактировать файл web.config и перезапускать службу. Класс HttpModule находится на стороне WS.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Вы можете использовать параметр приложения в качестве флага и проверить его значение (первым делом) в BeginRequest. Что-то вроде:

public class Global : HttpApplication
{
    protected bool myFlag;

    //....

    protected internal void Application_BeginRequest(object sender, EventArgs e)
    {
        if (!myFlag) return;
        // ....
    }
}
1 голос
/ 13 декабря 2011

Можно загрузить httpmodule без регистрации , используя атрибут PreApplicationStartMethod и метод Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule.

0 голосов
/ 13 декабря 2011

Как и в методе init, вы подписываетесь на BeginRequest, добавляя методы обратного вызова в события приложения. В случае, если вы должны иметь возможность отказаться от подписки на события. Я думаю, код, как это должно работать.

application.BeginRequest - = (новый EventHandler (this.Application_BeginRequest));

при необходимости вы можете снова добавить свой обратный вызов на событие, используя

application.BeginRequest + = (новый EventHandler (this.Application_BeginRequest));

...