IIS7:отключение HttpModule в субприложении - сайты, приложения и виртуальные каталоги

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

Вопрос

У меня есть несколько файлов aspx в папке «Кэш» моего приложения, и я не хочу, чтобы HttpModules запускался для этих файлов в этой папке.Я попробовал разместить web.config в подкаталоге, но узнал, что HttpModules берут корень web.config, а не корневой каталог подкаталога.Ссылка 1, Ссылка2.Поэтому я решил использовать этот каталог в качестве дополнительного приложения согласно предложению. здесь и здесь.

Итак, я настраиваю свое приложение, затем «добавляю приложение», сопоставляю его с этим каталогом, который уже был внутри этого приложения, и, бум, это терпит неудачу.Он работает для статического html-файла, но файлы aspx недоступны.

Мой вопрос: как мне настроить субприложение в IIS7, чтобы субприложение могло иметь свой собственный web.config и там я мог отключить HTTPModules корневого приложения?

Изменить: На самом деле я попытался создать подприложение в своем основном приложении, но это не сработало.Может ли кто-нибудь указать мне какую-нибудь статью о том, как настроить подприложение в IIS7?

Редактировать2:добавление изображения ошибки.Итак, как мне настроить дочерний пул приложений.Дочернее приложение работает в том же пуле приложений, что и родительское.

Редактировать3:извините, ребенок работал в другом пуле приложений.Общее приложение работало (без модулей).Я отмечаю ответ после того, как опробую модули. Спасибо за вашу помощь, ребята.В моем родительском приложении web.config есть что-то особенное, и сейчас я собираюсь его найти.

alt text

РЕДАКТИРОВАТЬ:На самом деле оба ответа, представленные ниже, верны.Если вы используете интегрированный режим 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>

http://www.jaylee.org/post/2008/03/Prevent-ASPNET-webconfig-inheritance-and-inheritInChildApplications-attribute.aspx

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