web-dev-qa-db-ja.com

IIS 7は、あるサーバーのweb.configに対して「重複したセクションが定義されました」エラーをスローしますが、別のサーバーではスローしません

私は3台のサーバーを使用しており、すべてWindows Webサーバー、.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つのサーバーで正常に動作しますが、そのうちの1つがエラーを報告します。

重複する「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" />

その1行を削除すると、次の行の重複について不平が出て、ほとんどすべての構成セクションが削除されるまで続きます。

何がこれを引き起こすのでしょうか?


編集:

これは、VS 2010および.NET 4に更新された.NET 3.5アプリケーションでした。3つのサーバーすべてに.NET 2/3.5および4がインストールされています。 IISアプリプールはすべて.NET 4に更新されました。

3つのサーバーすべてで、machine.configファイルには既にこれらのweb.configセクションのいくつかが定義されています(Damienの回答が言及しているように)が、3つのうち1つだけが重複しているという不満を持っています。

16
CodingWithSpike

「壊れた」サーバーでは、アプリプールは.NET 4.0を実行しています。修正は、アプリプールを.NET 2.0として実行するように設定することです。

ASP.NET AJAXは.NET 2.0以降に発明されたため、構成定義は中央のweb.configに組み込まれなかったため、ほとんどの状況ではサイトごとに宣言する必要がありました。4.0以前のバージョンのASP.NETのデフォルト構成を壊すという副作用で、その残骸の多くをクリーンアップしました。

26
Wyatt Barnett

私のマシンでmachine.configを確認したところ、これらのセクションはすでに定義されているようです。それらは他のマシンのmachine.configから削除されましたか(または、実際、サイトはこれらの他のサーバー上のASP.Netの以前のバージョンで実行されていましたか?)

私の知る限り、これらのセクションはmachine.config内のASP.NET 4のデフォルトインストールによって定義されています。

重複するセクションについて同様のエラーが発生し、IIS上の別のWebサイトに展開するのを修正しました。

私はそのWebサイトに大量の古いアプリケーションをデプロイしていましたが、web.configとの競合があったと思います。

私はウェブサイトを削除し、新しいウェブサイトを作成してそこにデプロイしたところ、うまくいきました。

0
Juan