IIS 7 выдает ошибку «определен дубликат раздела» для файла web.config на одном сервере, но не на другом - PullRequest
16 голосов
/ 07 сентября 2011

У меня есть 3 сервера, каждый из которых работает под управлением Windows Web Server, .NET 4 и IIS7.Начальный раздел моего файла web.config:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
          <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
        </sectionGroup>
      </sectionGroup>
    </sectionGroup>
  </configSections>

Это прекрасно работает на 2 серверах, но один из них сообщает об ошибке:

Есть дубликатРаздел 'system.web.extensions / scripting / scriptResourceHandler' определен

для строки:

<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />

Если я удалю эту единственную строку, то он будет жаловаться на дубликатСледующая строка и т. д., пока я не удалю почти все разделы конфигурации.

Есть идеи, что могло бы вызвать это?


Редактировать:

Это было приложение .NET 3.5, которое было обновлено до VS 2010 и .NET 4. На всех 3 серверах установлены .NET 2 / 3.5 и 4.Все пулы приложений IIS обновлены до .NET 4.

На всех 3 серверах в файле machine.config уже есть некоторые из этих разделов web.config, определенных в нем (как упоминается в ответе Дамиена), но только1 из 3 жалуется на дублирование.

Ответы [ 3 ]

25 голосов
/ 07 сентября 2011

На «сломанном» сервере ваш пул приложений работает под управлением .NET 4.0. Чтобы исправить это, нужно настроить пул приложений на .NET 2.0.

Поскольку ASP.NET AJAX был изобретен после .NET 2.0, определения конфигурации никогда не попадали в центральный web.config, поэтому в большинстве случаев их приходилось объявлять для каждого сайта. 4.0 исправил многие из этих ошибок, побочным эффектом которых было нарушение настроек по умолчанию для предыдущих версий ASP.NET.

2 голосов
/ 07 сентября 2011

Проверив machine.config на моей машине, кажется, эти разделы уже определены. Были ли они удалены с других компьютеров machine.config (или сайт фактически работал под более ранней версией ASP.Net на этих других серверах?)

Насколько я вижу, эти разделы определяются при установке ASP.NET 4 по умолчанию в machine.config.

0 голосов
/ 18 декабря 2015

Я получал похожую ошибку с дублированными разделами и исправил ее развертывание на другом веб-сайте в IIS.

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

Я просто удалил веб-сайт, создал новое и развернул там и егоработал.

...