Отключение 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 в своем приложении, затем создайте в этом модуле правила, которые соответствуют работе других модулей. У вас есть доступ к объекту запроса, поэтому вы сможете определить, какой тип запроса вы получаете, и направить логику в соответствующий (настраиваемый) модуль.