Visual StudioのSolution-> Web.Project-> Properties-> Webで、プロジェクトURLをhttp://localhost:51123/
からhttp://localhost:51123/NewProjectName
に変更しましたが、このエラーが引き続き発生します。
「追加されたすべてのモジュールで、一意のキー属性「名前」が....に設定されたタイプ「追加」の重複コレクションエントリを追加できません.
削除タグの追加は機能しますが、URLを変更する前でも問題になっているはずです。助言がありますか?
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>
また、いずれかの親フォルダーにweb.configファイルが重複していないことを確認してください(例:web.configバックアップファイル)。それが私の問題でした!
私はこのエラーをランダムに取得し始めました。 iis expressには2つのサイトがあることに気付きました。
この二重層により、IISは\ WFMで最初と2番目のサイトからweb.configを読み取ります。したがって、重複を見つけます。すべてのサイトを停止し、Webプロジェクトから\ WFMを削除しました。ただし、IIS express。の一時ファイルからファイルとフォルダーをクリアできます。私の場合、ソリューションの複数のバージョンがあり、1つのソリューションのproject\user configに追加のパスがありましたWebプロジェクトのURL VS 2015が追加したか、誰かが自分のユーザー構成をTFSにチェックインしました。
すべて web.config
ファイルは、マシン、IIS、プロジェクト、およびフォルダーレベルの場所で複数の継承のカスケードレベルで機能し、それぞれがより高度な特異性を提供します。
このエラーが発生する場合、次のいずれかを意味します。
#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>
プロジェクトフォルダと同じ物理パスでIIS Webサイトを作成し、それを使用してプロジェクトの仮想フォルダを作成すると、この問題が発生します。
きみの Web.config
ファイルが2回ロードされています。
代わりにorjantoが指摘したように、空のフォルダーを作成し、IIS Webサイトを指す)を使用して、Visual Studioから仮想フォルダーを作成します。
同じ問題がありました。同じポート番号でIISExpressを使用する別のプロジェクトがあることがわかりました。別のポート番号を使用するようにプロジェクトを変更すると、エラーはなくなりました。
プロジェクトプロパティ内の[Web]タブの[プロジェクトURL]が間違ったURLを指しており、変更できません(「仮想ディレクトリを作成しますか?」、VSがループでロックされました(はい->作成できません、いいえ->操作をキャンセル)手動でUrlを以前の(誤った)状態に戻すまで、解決策は管理者としてVSを実行することでした。そのURLを変更でき、すべてが機能し始めました。
同じタイプの問題がありました。 IISで公開されたサイトを実行すると、同じエラーが表示されました。
wwwroot
フォルダー(アプリケーションフォルダー外)にweb.config
ファイルが見つかりました。このファイルを削除すると、アプリケーションは正常に実行されました。
間違ったフォルダー(フォルダーアプリケーションの上)に配置されたweb.config
ファイルを探します。
がんばろう!
2017年6月の最新のWindows 10 Service Packにアップグレードした後、特定のノードがルート構成(machine.config)の下に表示されるようになったため、この問題が発生する場合があります。 web.configから重複を削除しましたが、すべて正常に機能しました。
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を削除しました。インターネットファイル。