Ответ 1
Кажется, в настоящее время нет решения для этого, следует избегать использования конфликтующих секционных групп в файле web.config.
У меня есть следующее в файле конфигурации родительских веб-приложений
<configuration>
<configSections>
<sectionGroup name="testmodule">
<section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
</sectionGroup>
</configSections>
</configuration>
Я хочу, чтобы дочерние подпапки не наследовали этот раздел конфигурации, где я должен поставить
<location path="." inheritInChildApplications="false">
, так как секции конфигурации должны быть первым дочерним элементом конфигурационного файла
Кажется, в настоящее время нет решения для этого, следует избегать использования конфликтующих секционных групп в файле web.config.
Об этом ответили пару раз на SO, но неправильно, на мой взгляд.
Документы довольно ясны (1) (2):
В следующем примере показано, как использовать этот атрибут в файле конфигурации указать, что заданные параметры в элементе местоположения для корня веб-сайта не должны наследоваться по дочерним приложениям:
InheritInChildApplications собственность применяется только к настройка местоположения настройки.
Чтобы ответить на ваш вопрос, этого должно быть достаточно:
<configuration>
...
<sectionGroup name="testmodule">
<section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
</sectionGroup>
...
<location path="." inheritInChildApplications="false">
<testModule>
....
</testModule>
</location>
Если вы используете другое имя в конфликтующем дочернем разделе, оно не будет конфликтовать с родителем, и вы можете ссылаться на оба раздела в своих соответствующих файлах web.config с использованием разных имен.
его не идеально, но его работа вокруг я использовал с успехом....
Мы получаем ошибки относительно дублирующих конфигурационных директив в одном из наших приложений. После исследования это выглядит так из-за этой проблемы.
Вкратце, наш корневой сайт - это ASP.NET 3.5 (это 2.0 с добавленными конкретными библиотеками), и у нас есть вспомогательное приложение, которое представляет собой ASP.NET 4.0.
Наследование web.config заставляет суб-приложение ASP.NET 4.0 наследовать файл web.config родительского приложения ASP.NET 3.5.
Тем не менее, приложение ASP.NET 4.0, глобальное (или "root" ) web.config, которое находится в C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config и C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config(в зависимости от вашей битности) уже содержит эти разделы конфигурации.
Затем приложение ASP.NET 4.0 пытается объединить корневой ASP.NET 4.0 web.config и родительский web.config(тот, который используется для приложения ASP.NET 3.5), и работает с дубликатами в node.
Единственное решение, которое я смог найти, - удалить разделы конфигурации из родительского web.config, а затем либо
У меня такая же ситуация, как в моем корневом приложении, использующем AppPool.net 2.0, а child AppPool -.Net 4.0. Я решил использовать предложение "запись уже добавлена " - Два отдельных пула приложений, установив оба AppPools для enableConfigurationOverride = "false", это работает как шарм.