Я пытаюсь добавить
<location inheritInChildApplications="false">
в web.config моего родительского веб-приложения, но, похоже, он не работает.
У моих родителей web.config
есть:
<configuration>
<configSections>
</configSections>
// 10 or so custom config sections like log4net, hibernate,
<connectionStrings>
</connectionStrings>
<appSettings>
</appSettings>
<system.diagnostics>
</system.diagnostics>
<system.web>
<webParts>
</webParts>
<membership>
</membership>
<compilation>
</compilation>
</system.web>
<location ..>
<system.web>
</system.web>
</location>
<system.webServer>
</system.webServer>
Моё дочернее веб-приложение настроено как приложение в IIS и наследуется от родительского, web.config
что вызывает проблемы.
Где именно я должен разместить
<location inheritInChildApplications="false">
поэтому он игнорирует все различные настройки web.config?
источник
inheritInChildApplications
не принимается в качестве допустимого параметра для<location />
элемента. Мой сайт работает под управлением SharePoint (2007). Я создал приложение в виртуальном каталоге на этом веб-сайте, управляемом собственным пулом приложений. Тем не менее, я сталкиваюсь с конфликтами между конфигурацией SharePoint и этим приложением. Посмотрите этот вопрос, который я опубликовал в разделе Ошибка сервера<location>
во время выполнения ...Он должен идти прямо под корневым
<configuration>
узлом, и вам нужно установить путь следующим образом:Лучший способ справиться с наследованием конфигурации - использовать
<clear/>
дочерний конфиг везде, где вы не хотите наследовать. Поэтому, если вы не хотите наследовать строки подключения родительского конфига, вы должны сделать что-то вроде этого:источник
Я положил все в:
за исключением:
<configSections/>
,<connectionStrings/>
и<runtime/>
.В некоторых случаях мы не хотим наследовать некоторые разделы от
<configSections />
, но мы не можем поместить<section/>
тег в<location/>
, поэтому мы должны создать<secionGroup />
и поместить нежелательные разделы в эту группу. Группы разделов могут быть позже вставлены в тег местоположения.Поэтому мы должны изменить это:
В:
источник
myNotInheritedSections
кef6Private
иunwantedSection
являетсяentityFramework
раздел.<configSections> <sectionGroup name="ef6Private"> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections> <location path="." inheritInChildApplications="false"> <ef6Private> <entityFramework /> </ef6Private> </location>
Мы получили ошибку, связанную с этим, после недавнего выпуска кода в одну из наших сред разработки. У нас есть приложение, которое является дочерним по отношению к другому приложению. Эти отношения работали нормально в течение ЛЕТ до вчерашнего дня.
Проблема:
мы получили желтую ошибку трассировки стека из-за ввода повторяющихся ключей. Это связано с тем, что ключ web.config для дочернего и родительского приложений имел этот ключ. Но это существовало многие годы без изменений. Почему вдруг это проблема сейчас?
Решение:
причина, по которой это никогда не было проблемой, заключается в том, что значения ключей И всегда были одинаковыми. Вчера мы обновили наши строки подключения SQL, чтобы включить Имя приложения в строку подключения. Это сделало строку уникальной и внезапно начала проваливаться.
Без каких-либо исследований точной причины этого, я должен предположить, что, когда дочернее приложение наследует значения родителей web.config, оно игнорирует идентичные пары ключ / значение.
Мы смогли решить эту проблему, обернув строку подключения следующим образом
Изменить: я забыл упомянуть, что я добавил это в PARENTS web.config. Мне не нужно было изменять web.config ребенка.
Спасибо всем за помощь в этом, спас наши окурки.
источник
Если (насколько я понимаю) вы пытаетесь полностью заблокировать наследование в веб-конфигурации вашего дочернего приложения, я предлагаю вам избегать использования тега в файле web.config. Вместо этого создайте новый пул приложений и отредактируйте файл applicationHost.config (расположенный в% WINDIR% \ System32 \ inetsrv \ Config и% WINDIR% \ SysWOW64 \ inetsrv \ config). Вам просто нужно найти запись для вашего apppool и добавить атрибут,
enableConfigurationOverride="false"
как в следующем примере:Это позволит избежать наследования конфигурации в приложениях, обслуживаемых MyAppPool.
Matteo
источник
/preview
так, чтобы люди могли протестировать новую версию, прежде чем делать это в живую. Все всегда предлагают<location>
для решения этой проблемы, поэтому я был очень рад прочитать ваш пост. Однако он жалуетсяThe entry 'default' has already been added.
на запись конфигурации, связанную с AppFabric, даже когда я используюenableConfigurationOverride="false"
enableConfigurationOverride="false"
на свое корневое приложение, оно полностьюЭто страница Microsoft на
location
теге: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxЭто может быть полезно для некоторых людей.
источник
Мы получаем ошибки о дублирующих директивах конфигурации в одном из наших приложений. После расследования похоже, что это из-за этой проблемы .
Короче говоря, наш корневой веб-сайт - 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 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 пытается объединить корневой web.config ASP.NET 4.0 и родительский web.config (тот, что для приложения ASP.NET 3.5) и работает с дубликатами в узле.
Единственное решение, которое мне удалось найти, - это удалить разделы конфигурации из родительского web.config, а затем либо
источник