Невозможно добавить запись дубликата коллекции типа '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 при переходе на страницу.