Невозможно добавить запись дубликата коллекции типа 'add' с уникальным ключевым атрибутом 'name', установленным в 'aspNetCore

Недавно я опубликовал приложение ASP.NET Core для своего хоста. Я нахожу ошибку HTTP 500.19.

IIS 8.5 говорит, что проблема заключается в следующем: -

"Невозможно добавить запись дубликата коллекции типа 'add' с уникальным атрибутом ключа 'name', установленным в 'aspNetCore'

Он также подчеркивает эту ключевую строку добавления в моей конфигурации system.webServer: -

<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>

Ответ 1

Ответ выше не помог мне, однако комментарий DavidG решил мою проблему, поэтому отправляю сообщение как ответ, если он помогает кому-то другому.

Для меня я не запускал его как под-приложение, и проект, который работал у меня без каких-либо проблем в течение года, внезапно прекратил работать с этой проблемой. Все еще не уверен, что изменилось. Когда я прокомментировал или удалил <add name="aspNetCore".../>, ошибка продолжалась, а затем эта строка автоматически добавилась.

Чтобы решить эту проблему, я добавил <remove name="aspNetCore" /> в файл конфигурации прямо над записью <add name="aspNetCore"... />, и все снова заработало.

Ответ 2

Чтобы продолжить работу в IIS EXPRESS, перейдите в корневую папку, где находится файл .sln.

перейдите, чтобы удалить файл из .vs\config\applicationhost.config или сохранить это во временном месте, если у вас есть что-то там.

Закройте /Re Откройте VS Studio, запустите снова, будет работать.

Если вам нужно добавить что-то обратно из save applicationhost.config, просто сравните эти два, но я не вижу, что у вас там могло быть.

Ответ 3

К сожалению, ни одно из предложенных решений не помогло мне. Каким-то чудом я узнал, что мой файл applicationhost.config был изменен, к сожалению, из-за чего появилась ошибка "Невозможно добавить повторяющуюся коллекцию" при переходе на определенную страницу в моем веб-приложении .NET Core.

Под тегом <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>

HTTP-ошибка 500.19 показалась мне, когда я перешел на страницу "/SomePage". Как видите, по какой-то причине для этой конкретной страницы был отдельный тег <application>. Я понятия не имею, почему.

Я удалил весь этот тег <application> для пути "/SomePage", и все снова заработало.

Ответ 4

У меня была такая же проблема, и в моем случае прокомментировал строку

<add name="aspNetCore"...

решил проблему и поднял вопрос "почему он работает без AspNetCoreModule". В моем случае проблема заключалась в том, что я добавлял сайт в качестве под-приложения в defaultwebsite, и он был расположен в wwwrootfolder. Я думаю, что конфигурация автоматически была загружена по умолчанию и была применена для всех сайтов под-приложений.

Эта ссылка помогла

Таким образом, решение заключалось в том, чтобы переместить его как отдельный сайт на другой порт.

Ответ 5

Я столкнулся с этой проблемой в сравнении с 2017 годом в проекте, который работал нормально без изменения web.config. Просматривая эти посты, я понял, что это может быть проблема IIS Express, и решил просто удалить папку .vs и перезапустить ее.

Ответ 6

В моем случае проблема была вызвана помещением пути во вкладку "Отладка" моего веб-проекта, чтобы приложение открывалось на определенной странице. Это приводит к двум тихим добавлениям к файлу .vs\config\applicationhost.config, похожему на тот, который наблюдается в восьмерых.

В:

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

В:

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

где похожая запись уже существует. Это корень проблемы.

К сожалению, сообщение об ошибке вводит в заблуждение.

Решение состоит в том, чтобы переименовать applicationhost.config, перезапустить VS и позволить ему пересобрать файл. Вот почему решение Ricardo об удалении всей папки .vs также работает.

Ответ 7

Эта ошибка связана с тем, что в ASP.NET Core есть корневой файл с именем ".vs\config\applicationhost.config". Изначально он имеет 67 ключей. Вы можете увидеть это здесь, в Редакторе конфигурации. Where to find the ApplicationHost.config

Этот файл с именем ".vs\config\applicationhost.config" имеет настройки по умолчанию, которые переносит Web.config для работы, и одним из них является этот обработчик. Вы также можете увидеть это здесь. Key aspNetCore

Проблема в том, что этот файл имеет этот обработчик, и то, что вы публикуете, унаследует этот обработчик.

У вас есть два решения: прокомментируйте строку вашего опубликованного web.config или удалите этот обработчик из ".vs\config\applicationhost.config"

Ответ 8

У меня только что был этот, оказалось, что я изменил URL-адрес приложения в настройках отладки для свойств веб-сайта, чтобы загрузить определенную страницу (неправильно, но случилось).

enter image description here

В IIS он автоматически создал новое приложение в тестовом домене под названием About (в данном случае).

Удаление мошеннического приложения IIS из домена решает проблему, поскольку оно не пытается перезагрузить тот же файл web.config при переходе на страницу.