IIS7:отключение HttpModule в субприложении - сайты, приложения и виртуальные каталоги
-
24-09-2019 - |
Вопрос
У меня есть несколько файлов aspx в папке «Кэш» моего приложения, и я не хочу, чтобы HttpModules запускался для этих файлов в этой папке.Я попробовал разместить web.config в подкаталоге, но узнал, что HttpModules берут корень web.config, а не корневой каталог подкаталога.Ссылка 1, Ссылка2.Поэтому я решил использовать этот каталог в качестве дополнительного приложения согласно предложению. здесь и здесь.
Итак, я настраиваю свое приложение, затем «добавляю приложение», сопоставляю его с этим каталогом, который уже был внутри этого приложения, и, бум, это терпит неудачу.Он работает для статического html-файла, но файлы aspx недоступны.
Мой вопрос: как мне настроить субприложение в IIS7, чтобы субприложение могло иметь свой собственный web.config и там я мог отключить HTTPModules корневого приложения?
Изменить: На самом деле я попытался создать подприложение в своем основном приложении, но это не сработало.Может ли кто-нибудь указать мне какую-нибудь статью о том, как настроить подприложение в IIS7?
Редактировать2:добавление изображения ошибки.Итак, как мне настроить дочерний пул приложений.Дочернее приложение работает в том же пуле приложений, что и родительское.
Редактировать3:извините, ребенок работал в другом пуле приложений.Общее приложение работало (без модулей).Я отмечаю ответ после того, как опробую модули. Спасибо за вашу помощь, ребята.В моем родительском приложении web.config есть что-то особенное, и сейчас я собираюсь его найти.
РЕДАКТИРОВАТЬ:На самом деле оба ответа, представленные ниже, верны.Если вы используете интегрированный режим IIS7, ваши модули должны находиться в system.webServer, а если IIS7 — классический режим, ваши модули (и обработчики?) должны находиться в system.web.
Решение
У JKG есть правильный ответ для IIS6, но в IIS7 синтаксис немного другой:
<system.webServer>
<modules>
<remove name="MyModule"/>
</modules>
</system.webServer>
Другие советы
Файл web.config всегда будет наследовать от своего родителя, если он находится в том же веб-приложении, но вы можете очистить его целиком или удалить элемент следующим образом:
Из дочернего файла web.config (очистить все или удалить элемент)
<httpModules>
<clear />
<remove name="MyModule"/>
</httpModules>
Из родительской конфигурации с помощью тега местоположения...
<location inheritInChildApplications="false">
<system.web>
<!-- ... -->
</system.web>
</location>