Обнаружение сопоставленных виртуальных каталогов с помощью ihttpmodule в приложении c # .net

StackOverflow https://stackoverflow.com/questions/2216001

Вопрос

У меня есть веб-сайт .net, который содержит IHttpModule, который я написал для выполнения определенных задач (авторизация и т.д.).Но на веб-сайте есть несколько виртуальных каталогов, которые сопоставлены со сторонними приложениями, которые, к сожалению, я не могу изменить или переместить (напримерфорумы сервера сообщества, adxstudio cms и другие).

Я ищу способ предотвратить запуск моего IHttpModule при выполнении запросов к содержимому этих виртуальных каталогов.Возможно ли это?

[Редактировать - добавлено следующее]

Я экспериментировал с добавлением <remove name="X"/> внутри <httpModules> узел в файлах Web.config в приложениях виртуального каталога, но, похоже, это не работает.Вероятно, это тоже не самое лучшее решение, потому что сторонние приложения могут быть обновлены, поэтому я не хочу требовать изменений в их коде / конфигурации.

Я также попытался добавить <location path="." inheritInChildApplications="false"> вокруг моего <system.web> узел в родительском Web.config, но это тоже, похоже, не сработало.

[Отредактируйте еще раз - добавлено больше]

Причина в том, что это не работает, заключается в том, что событие инициализации IHttpModule запускается только один раз за жизненный цикл приложения (а не за запрос, как я предполагал).Поскольку я добавляю кучу прослушивателей событий в событие init, они по-прежнему запускаются при последующих запросах...

Это было полезно?

Решение

Если у вас есть список этих каталогов и их виртуальных путей, вы можете создать поиск по ним.

Для каждого HttpRequest, который запускает ваш модуль, вы можете проверить наличие виртуального пути, чтобы увидеть, принадлежит ли он какому-либо из путей в поиске.Если да, то вы можете ничего не делать или выйти из кода вашего модуля.

PS:Из-за проблем с производительностью вы, вероятно, захотите сохранить поиск в состоянии приложения (напримерхэш-карта и т.д.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top