Ошибка дублирования раздела даже после использования тега <remove> в web.config для IIS

У меня есть сайт, работающий в подкаталоге другого сайта. Они запускаются в отдельных пулах приложений. На двух сайтах работают разные версии Entity Framework. Поэтому в файле web.config в подкаталоге есть:

<remove name="entityFramework"/>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Но даже с тегом <remove> я все равно получаю эту ошибку:

Section or group name 'entityFramework' is already defined. Updates to this may only occur at the configuration level where it is defined.

Я также разместил теги <location> в родительском web.config, где это возможно:

<location path="." inheritInChildApplications="false">

Тег <location> присутствует вокруг родительского раздела web.config <entityFramework>.

И я поместил enableConfigurationOverride="false" в файлы applicationHost.config для IIS (оба файла в System32 и SysWOW64).

Как запретить сайту в подкаталоге видеть родительский тег entityFramework?

ИЗМЕНИТЬ

Версия IIS: 7.5.7600.16385

Из родительского web.config:

<configSections>
  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

л

  <location path="." inheritInChildApplications="false">
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
  </location>

Из дочернего web.config:

  <configSections>
    <remove name="entityFramework"/>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />    
    <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>

л

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

ИЗМЕНИТЬ 2

Что касается использования <clear/>: это вызывает серию ошибок в описаниях отсутствующих разделов. Если я добавлю обратно ~ 100 строк объявлений раздела, я получу ошибку: An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode. Ошибка сохраняется, даже если я использую <validation validateIntegratedModeConfiguration="false" /> в <system.webServer>.

Ответы

Ответ 1

Можете ли вы подтвердить, что вы пробовали clear вместо remove, проблема все еще сохраняется или нет?

 <configSections>
    <clear/>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />    
    <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>

Вы можете прочитать здесь

Надеюсь, это поможет вам

Ответ 2

Вы сказали, что используете, но в родительском web.config, который вы разместили, путь = "." пропал, отсутствует. Вам понадобится, чтобы блокировать наследование.