web-dev-qa-db-ja.com

Web.Config重複セクションの原因を調査する手順

症状

  • IIS 7 and Dot Net 2.0 Integrated app pool:ダブルクリックしてweb.configセクションを表示すると、次のようなエラーダイアログが表示されます。

"There was an error while performing this operation.... Filename... web.config... Error: There is a duplicate..."

  • "Http 500.19"内部サーバーエラーが表示されます。重複しています... 'system.web.extensions/scripting/scriptResourceHandler'セクションが定義されています... "

  • VS 2008からアプリを実行すると、「Webサーバーでデバッグを開始できません...」ダイアログが表示されます。

インフラ

  • Webサーバー:IIS 7 Windows 7 x64で実行中
  • ASP.Net MVC2
  • アプリケーションプール:Dot Net 2.0統合
  • VS 2008

試したこと

  • 問題が同じマシン上の他のIIS appディレクトリで発生しているかどうかを確認しました。
  • IISでアプリケーションを削除し、再度追加しました。
  • 以前のバージョンのweb.configファイルに戻しました。
  • ソースコードの最新の作業バージョンをチェックアウトしました。アプリを再構築し、新しいアプリディレクトリを追加して、IISからweb.configコンテンツを表示しようとしました。
  • 次の場所に重複するセクションがある可能性のあるweb.configファイルを探しました:
    • Inetpubルート。
    • 「C:\ Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config」
    • ASP.Net MVCアプリの「Views」サブフォルダー。
  • ソースコードを別の開発マシンにチェックアウトしました。セットアップIIS 7アプリフォルダー。Web.configには問題ありません。

質問

  • このエラーの理由が別のweb.configファイルである場合、他にどこを見ればよいですか?
  • これらの症状には他の理由がありますか?
40
Pauly

これをチェックリストに追加します。

  • チェックするmachine.configが、アプリケーションが実行されているアプリケーションプールと同じDot Netフレームワークからのものであることを確認してください。

私の場合、デフォルトのアプリケーションプールはDot Net 2.0からDot Net 4.0に変更されました。これにより、ルートmachine.configが4.0バージョンに変更されました。このバージョンには、「scriptResourceHandler」セクションとその他のセクションが含まれています。したがって、重複セクション警告。

35
Pauly

Webサイトで DotNetOpenAuth ライブラリを使用していて、Webサイトが.NET 4.0 appの場合、この行が[〜#〜であることを確認する必要があります]しない[〜#〜]web.config

<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

私は NuGetを使用するDNOA をインストールし、その行をweb.configファイルに自動的に追加しました。だから私はそれを取り除かなければならなかった。

ちなみに、組み込みの(hella-crappy)ビジュアルスタジオ開発サーバー(別名Cassini)を使用している場合、この問題は発生しません。この問題が発生するのは、コードをIIS7エクスプレスまたはフルIIS7に移動した場合のみです。

だから、その一行を削除して、楽しいダンスをしましょう。

7
Pure.Krome

解決策は、machine.configを変更することです。

  1. セクションをASP.NET 2.0のmachine.configに移動します。
  2. またはASP.NET 4.0のmachine.configからセクションを削除します

ここにwww.asp.netの人々が可能な修正を与えます: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

見てください:)

3
graffic

IIS 7で、「Classic .NET AppPool」という名前のappPoolのアプリケーションプール設定をV2.0に変更します。これを行うには、Classic .NET AppPoolを右クリックして「基本設定...」を選択します。その後、.NET FrameworkのバージョンをV2.0.xxxxxにリセットします。アプリプールをリサイクルしてWebサイトを再起動すると、正常に機能するはずです。

3
Mike

私の問題はかなり異なっており、これは重複しているセクションによって異なります。

たとえば、異なるバージョンのMicrosoft Enterprise Libraryを使用した親アプリと子アプリの結果であると思われるloggingConfigurationセクションが重複していた

1
Rob Allen

このMSトラブルシューティングは、次の場合にも役立つ可能性があります。 http://support.Microsoft.com/kb/942055

1

applicationHost.configファイルを開く価値があるかもしれません:

C:\Windows\System32\inetsrv\config\applicationHost.config

具体的には、サイト名に一致する<location>タグを探し(複数のエントリが存在する可能性があります)、そこに宣言されたscriptResourceHandlerセクションが重複していないかどうかを確認します。 <location path="">の内容も確認します。

0
Kev