web-dev-qa-db-ja.com

IIS express:一意のキー属性 'name'が設定されたタイプ 'add'の重複するコレクションエントリを追加できません

Visual StudioのSolution-> Web.Project-> Properties-> Webで、プロジェクトURLをhttp://localhost:51123/からhttp://localhost:51123/NewProjectNameに変更しましたが、このエラーが引き続き発生します。

追加されたすべてのモジュールで、一意のキー属性「名前」が....に設定されたタイプ「追加」の重複コレクションエントリを追加できません.

削除タグの追加は機能しますが、URLを変更する前でも問題になっているはずです。助言がありますか?

28
Prasath Siva

IIS Expressはおそらく2 <application>- blocksと両方が同じphysicalPathを指します。

IIS Express config file in:My Documents\IISExpress\config\applicationhost.config

NewProjectNameを検索

ルートアプリケーションのphysicalPathを別のものに変更します。空のフォルダーをポイントします。

次のようになります。

<site name="NewProjectName" id="1">
  <application path="/" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="c:\Temp" />
  </application>
  <application path="/NewProjectName" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="c:\sourcecode\NewProjectName" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation="*:51123:localhost" />
  </bindings>
</site>
47
orjanto

また、いずれかの親フォルダーにweb.configファイルが重複していないことを確認してください(例:web.configバックアップファイル)。それが私の問題でした!

17
Shirlz

私はこのエラーをランダムに取得し始めました。 iis expressには2つのサイトがあることに気付きました。 enter image description here

この二重層により、IISは\ WFMで最初と2番目のサイトからweb.configを読み取ります。したがって、重複を見つけます。すべてのサイトを停止し、Webプロジェクトから\ WFMを削除しました。ただし、IIS express。の一時ファイルからファイルとフォルダーをクリアできます。私の場合、ソリューションの複数のバージョンがあり、1つのソリューションのproject\user configに追加のパスがありましたWebプロジェクトのURL VS 2015が追加したか、誰かが自分のユーザー構成をTFSにチェックインしました。

12
Steve Coleman

すべて web.configファイルは、マシン、IIS、プロジェクト、およびフォルダーレベルの場所で複数の継承のカスケードレベルで機能し、それぞれがより高度な特異性を提供します。

このエラーが発生する場合、次のいずれかを意味します。

  1. 同じファイルに同じキーを2回追加しました(見たことがないため)
  2. 継承チェーンの上位にある別のファイルに同じキーが既に存在します

#2にはさまざまな根本原因がありますが、それらを回避する場合は、以前の宣言をすべて削除してから、そのレベルで独自の宣言を再度追加することができます(アップサート機能には十分なお金を払います) )。

したがって、<remove>タグは、問題のある要素に対して次のようになります。

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">

    <remove name="ErrorLog" />
    <remove name="ErrorMail" />
    <remove name="ErrorFilter" />

    <add name="ErrorLog"    type="Elmah.ErrorLogModule, Elmah"    preCondition="managedHandler" />
    <add name="ErrorMail"   type="Elmah.ErrorMailModule, Elmah"   preCondition="managedHandler" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />

  </modules>
</system.webServer>
10
KyleMit

プロジェクトフォルダと同じ物理パスでIIS Webサイトを作成し、それを使用してプロジェクトの仮想フォルダを作成すると、この問題が発生します。
きみの Web.configファイルが2回ロードされています。
代わりにorjantoが指摘したように、空のフォルダーを作成し、IIS Webサイトを指す)を使用して、Visual Studioから仮想フォルダーを作成します。

8
Shekhar

同じ問題がありました。同じポート番号でIISExpressを使用する別のプロジェクトがあることがわかりました。別のポート番号を使用するようにプロジェクトを変更すると、エラーはなくなりました。

1
Parallel Park

私は同じ問題を抱えていました、私がやったことはここにあります:

  • サーバー設定をローカルからIISにIIS Express:

enter image description here

  • それでも機能しない場合は、ポート番号を別のポート番号に変更し、[仮想ディレクトリの作成]ボタンをクリックします。ソリューションをクリーニングしてから、再構築します。

enter image description here

0
Willy David Jr

プロジェクトプロパティ内の[Web]タブの[プロジェクトURL]が間違ったURLを指しており、変更できません(「仮想ディレクトリを作成しますか?」、VSがループでロックされました(はい->作成できません、いいえ->操作をキャンセル)手動でUrlを以前の(誤った)状態に戻すまで、解決策は管理者としてVSを実行することでした。そのURLを変更でき、すべてが機能し始めました。

0
Mark

同じタイプの問題がありました。 IISで公開されたサイトを実行すると、同じエラーが表示されました。

wwwrootフォルダー(アプリケーションフォルダー外)にweb.configファイルが見つかりました。このファイルを削除すると、アプリケーションは正常に実行されました。

間違ったフォルダー(フォルダーアプリケーションの上)に配置されたweb.configファイルを探します。

がんばろう!

0
AlexQL

上記のすべての方法を試しましたが、何もうまくいきませんでした。私は次のようなエラーを取得し続けました

Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'QueryStringModule'

最後に、サーバーを

IIS ExpressからローカルIISへのプロジェクトプロパティビルドは以下のとおりです。

enter image description here

そしてそれは私のために働いた。

0
Rinoy Ashokan

2017年6月の最新のWindows 10 Service Packにアップグレードした後、特定のノードがルート構成(machine.config)の下に表示されるようになったため、この問題が発生する場合があります。 web.configから重複を削除しましたが、すべて正常に機能しました。

0
Alex Stephens

answer that @ orjanto を投稿することで問題は解決しましたが、その上に追加の問題がありました。 修正後も、Internet ExplorerはHTMLページがファイルではなくディレクトリであると考えていました。

IIS Express設定ファイルに重複がありました:

<site name="MyAPI" id="56">
     <application path="/" applicationPool="Clr4IntegratedAppPool">
          <virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" />
     </application>
     <application path="/login.html" applicationPool="Clr4IntegratedAppPool">
          <virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" />
     </application>
     <bindings>
          <binding protocol="http" bindingInformation="*:57018:localhost" />
          <binding protocol="https" bindingInformation="*:44302:localhost" />
     </bindings>
 </site>

2番目の<application>エントリのpath = "/ login.html"に注意してください。

私のページはディレクトリのように「localhost:57018/login.html /」にリダイレクトしていました。

2番目のエントリを削除すると、構成ファイルの重複に関する問題が修正されましたが、Internet Explorerで/login.html/がディレクトリ(Internet Explorer 11)であると思われるという問題が引き続き発生しました。問題を診断するために、ChromeおよびChrome正常に動作しました。

Internet Explorerに移動し、[ツール]> [インターネットオプション]> [全般]タブに移動しました。次に、[閲覧の履歴]セクションで、履歴、Cookie、ウェブサイトのデータ、およびTempを削除しました。インターネットファイル。

0
Kyle B