Подтвердить что ты не робот

Как предотвратить наследование файла web.config для "configSections"?

У меня есть следующее в файле конфигурации родительских веб-приложений

<configuration>
  <configSections>
    <sectionGroup name="testmodule">
      <section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
    </sectionGroup>
  </configSections>
</configuration>

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

4b9b3361

Ответ 1

Кажется, в настоящее время нет решения для этого, следует избегать использования конфликтующих секционных групп в файле web.config.

Ответ 2

Об этом ответили пару раз на SO, но неправильно, на мой взгляд.

Документы довольно ясны (1) (2):

В следующем примере показано, как использовать этот атрибут в файле конфигурации указать, что заданные параметры в элементе местоположения для корня веб-сайта не должны наследоваться по дочерним приложениям:

InheritInChildApplications собственность применяется только к настройка местоположения настройки.

Чтобы ответить на ваш вопрос, этого должно быть достаточно:

<configuration>
...
<sectionGroup name="testmodule">
    <section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
</sectionGroup>
...
<location path="." inheritInChildApplications="false">
    <testModule>
    ....
    </testModule>
</location>

(1) - http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.inheritinchildapplications.aspx

(2) - http://msdn.microsoft.com/en-us/library/ms178692.aspx

Ответ 3

Если вы используете другое имя в конфликтующем дочернем разделе, оно не будет конфликтовать с родителем, и вы можете ссылаться на оба раздела в своих соответствующих файлах web.config с использованием разных имен.

его не идеально, но его работа вокруг я использовал с успехом....

Ответ 4

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

Вкратце, наш корневой сайт - это 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, а затем либо

  • Определите, что они вам не нужны в корневом приложении, или
  • Обновите родительское приложение до ASP.NET 4.0 (чтобы он получал доступ к корневым конфигурациям web.config)