IIS 7在一台服务器上为web.config抛出"重复节定义"错误,但不是另一台服务器

Cod*_*ike 16 asp.net iis-7 web-config

我有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>
Run Code Online (Sandbox Code Playgroud)

这在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" />
Run Code Online (Sandbox Code Playgroud)

如果我删除那一行,那么它会抱怨下一行的副本,依此类推,直到删除几乎所有的配置部分.

知道是什么会导致这个吗?


编辑:

这是一个.NET 3.5应用程序,已更新到VS 2010和.NET 4.所有3台服务器都安装了.NET 2/3.5和4.IIS应用程序池已全部更新为.NET 4.

在所有3台服务器中,该machine.config文件已经定义了其中的一些web.config部分(如Damien的回答所提到的),但是3个中只有1个抱怨它被复制.

Wya*_*ett 26

在"损坏的"服务器上,您的应用程序池正在运行.NET 4.0.修复是将应用程序池设置为以.NET 2.0运行.

因为ASP.NET AJAX是在.NET 2.0之后发明的,所以配置定义从未进入中心web.config,因此在大多数情况下你必须在每个站点上声明它们.4.0清理了很多这样的副本,其副作用是打破了以前版本的ASP.NET的默认配置.


Dam*_*ver 2

在我的机器上检查后machine.config,似乎已经定义了这些部分。它们是否已从其他计算机上删除machine.config(或者该站点事实上是否在这些其他服务器上的早期版本的 ASP.Net 下运行?)

据我所知,这些部分是由 ASP.NET 4 中默认安装定义的machine.config