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

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

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

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

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

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

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

alt text

РЕДАКТИРОВАТЬ: На самом деле оба ответа, представленные ниже, являются правильными. Если вы используете интегрированный режим IIS7, ваши модули должны быть в system.webServer, а в классическом режиме IIS7 ваши модули (и обработчики?) Должны быть в system.web

Ответы [ 2 ]

8 голосов
/ 29 января 2010

JKG имеет правильный ответ для IIS6, но синтаксис немного отличается в IIS7:

<system.webServer>
  <modules>
    <remove name="MyModule"/>
  </modules>
</system.webServer>
5 голосов
/ 29 января 2010

Файл 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

...