Отключение HttpModule в определенном месте

Я знаю, что это уже задавалось здесь, но ответ (вместо этого используется обработчик) не решает проблему, так как я использую сторонний компонент, который не реализует IHttpHandler.

Итак, еще раз, есть ли способ загрузить / выгрузить HttpModule по определенному запросу?

РЕДАКТИРОВАТЬ: я забыл упомянуть, что мы работаем с.NET 2.0. Я извиняюсь за подделку.

3 ответа

Решение

Я не проверял это, но комментарий в этой статье, кажется, предполагает, что можно зарегистрировать модули только для определенных местоположений, используя <location> элемент в web.config, например:

  <location path="some/path">
    <system.web>
      <httpModules>
        <remove name="name"/>
        <add name="name" type="type"/>
      </httpModules>
    </system.web>
  </location>

Я предполагаю, что проблема связана с наследованием HttpModule, нужно ли вам наследование вашего web.config с контролем третьей стороны?

Попробуйте добавить этот атрибут там, где будет путь, где хранится ваш компонент;

<location path="/ThirdPartyComponents" inheritInChildApplications="false">
    ...
</location>

Один из способов сделать это - использовать модуль-обертку. Зарегистрируйте один httpModule в своем приложении, затем создайте в этом модуле правила, которые соответствуют работе других модулей. У вас есть доступ к объекту запроса, поэтому вы сможете определить, какой тип запроса вы получаете, и направить логику в соответствующий (настраиваемый) модуль.

Другие вопросы по тегам