web-dev-qa-db-ja.com

一意のキー属性「name」が「aspNetCore」に設定されたタイプ「add」の重複コレクションエントリを追加できません

最近、ASP.NET Coreアプリケーションをホストに公開しました。 HTTPエラー500.19が発生しています。

IIS 8.5では、問題は次のようになっています。

「一意のキー属性「name」が「aspNetCore」に設定されたタイプ「add」の重複コレクションエントリを追加できません」

また、system.webServer configでこのキーの追加行を強調しています:

<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule"      
</handlers>

私はこれで何をすべきか本当に分かりません。これのインスタンスが重複しているように見えるので、私はこれの名前を変更しようとしましたが、まだこれを再度追加するように要求しますか?

ここに私のweb.configがあります:-

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
  Configure your application settings in appsettings.json. Learn more at http://go.Microsoft.com/fwlink/?LinkId=786380
  -->

  <system.webServer>
  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>

<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
</configuration>
20
Phill Wiggins

上記の答えは私にはうまくいきませんでしたが、DavidGのコメントは私の問題を解決したので、他の人に役立つ場合に備えて答えとして投稿します。

私にとって、私はnotをサブアプリケーションとして実行していましたが、1年以上問題がなかったプロジェクトが突然この問題の処理を停止しました。何が変わったのかまだわかりません。 <add name="aspNetCore".../>をコメントアウトまたは削除すると、エラーが続き、その行が自動的に再追加されました。

この問題を解決するために、<remove name="aspNetCore" />エントリのすぐ上にある<add name="aspNetCore"... />を構成ファイルに追加すると、作業が再開されました。

15
Brian S

IIS EXPRESSで実行を継続するには、.slnファイルが存在するルートフォルダーに移動します。

。vs\config\applicationhost.configからファイルを削除するか、何かがある場合は一時的な場所に保存します。

Close/Re VS Studioを開き、再度実行すると動作します。

Save applicationhost.configから何かを追加し直す必要がある場合は、これら2つを比較するだけですが、そこに何があるかわかりません。

5
SilentTremor

残念ながら、提案された解決策はどれも役に立たなかった。いくつかの奇跡によって、applicationhost.configファイルが不幸なことに変更され、.NET Core Webサイトアプリケーションの特定のページに移動したときに "重複したコレクションエントリを追加できません"エラーが表示されることを知りました。

<sites>applicationhost.configタグの下には、次のものがありました。

<site name="MyWebsite" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\___\solutionname\MyWebsite" />
    </application>
    <application path="/SomePage" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\___\solutionname\MyWebsite" />
    </application>
    <bindings>
        <binding protocol="https" bindingInformation="*:12345:localhost" />
    </bindings>
</site>

ページ「/ SomePage」に移動すると、500.19 HTTPエラーが表示されました。ご覧のとおり、何らかの理由で、この特定のページにseparate<application>タグがありました。理由はわかりません。

「/ SomePage」パスの<application>タグ全体を削除すると、すべてが再び機能し始めました。

5
eightx2

私は同じ問題を抱えていて、私の場合は行をコメントしました

<add name="aspNetCore"...

問題を解決し、「なぜAspNetCoreModuleなしで機能するのか」という質問を提起しました。私の場合の問題は、defaultwebsiteのサブアプリケーションとしてサイトを追加し、それがwwwrootfolderにあることでした。構成はdefaultwebsiteによって自動的に選択され、すべてのサブアプリケーションサイトに適用されたと思います。

このリンクは役に立ちました

そのため、解決策は、別のポート上の別のサイトとして移動することでした。

3
eugen

Web.configを変更せずに正常に動作していたプロジェクトで、vs 2017でこの問題に直面しました。この投稿を見て、私はそれがIIS明白な問題であるかもしれないことに気づきました。

3
Riccardo

このエラーは、ASP.NET Coreに「.vs\config\applicationhost.config」と呼ばれるルートファイルがあるためです。最初は67個のキーがあります。ここで、構成エディターで確認できます。 Where to find the ApplicationHost.config

「.vs\config\applicationhost.config」と呼ばれるこのファイルには、Web.configが動作するためのデフォルト設定があり、その1つがそのハンドラーです。こちらでもご覧になれます。 Key aspNetCore

問題は、そのファイルにそのハンドラーがあり、公開するものがそのハンドラーを継承することです。

2つのソリューションがあります。公開されたweb.configの行にコメントするか、「。vs\config\applicationhost.config」からそのハンドラーを削除します

0
ccassob

私の場合、この問題は、Webプロジェクトの[デバッグ]タブにパスを配置して、アプリが特定のページで開くようにすることで発生しました。これにより、ファイル.vs\config\applicationhost.configに2つのサイレント追加が行われます。これは、eightx2で見られるものと似ています。

で:

<add name="api AppPool" managedRuntimeVersion="" />

で:

<application path="/blah" applicationPool="api AppPool">
<virtualDirectory path="/" physicalPath="your-path\src\your-proj" />
</application>

同様のエントリが既に存在する場合。これが問題の根本です。

残念ながら、エラーメッセージは完全に誤解を招くものです。

解決策は、applicationhost.configの名前を変更し、VSを再起動し、ファイルを再構築することです。これが、リカルドの.vsフォルダー全体を削除するソリューションも機能する理由です。

0
MonteChristo