asp.net core - No se puede agregar una entrada de colección duplicada del tipo ''agregar'' con el atributo de clave único ''nombre'' establecido en ''aspNetCore
asp.net-core iis-8.5 (7)
En mi caso, el problema se debió al colocar una ruta en la pestaña de depuración de mi proyecto web para que la aplicación se abriera en una página en particular. Esto causa dos adiciones silenciosas al archivo .vs / config / applicationhost.config, similar a la observada por eightx2.
En:
<add name="api AppPool" managedRuntimeVersion="" />
En:
<application path="/blah" applicationPool="api AppPool">
<virtualDirectory path="/" physicalPath="your-path/src/your-proj" />
</application>
donde ya existe una entrada similar. Esta es la raíz del problema.
El mensaje de error, desafortunadamente, es completamente engañoso.
La solución es cambiar el nombre de applicationhost.config, reiniciar VS y dejar que vuelva a generar el archivo. Es por esto que la solución de Ricardo de eliminar toda la carpeta .vs también funciona.
Recientemente publiqué mi aplicación ASP.NET Core en mi host. Estoy golpeando un error HTTP 500.19.
IIS 8.5 dice que el problema es:
"No se puede agregar una entrada de colección duplicada del tipo ''agregar'' con el atributo de clave único ''nombre'' establecido en ''aspNetCore''"
También destaca esta línea de adición de teclas en mi configuración system.webServer: -
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule"
</handlers>
No estoy realmente seguro de qué hacer en esto. Parece que hay una instancia duplicada de esto, así que he intentado cambiar el nombre de este pero ¿aún me pide que lo agregue de nuevo?
Aquí está mi 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>
Enfrenté este problema con vs 2017 en un proyecto que estaba funcionando bien sin cambiar el web.config. Al ver estas publicaciones, me di cuenta de que podría tratarse de un problema de IIS Express y resolví simplemente eliminando la carpeta .vs y reiniciando vs.
Ese error se debe a que hay un archivo raíz en ASP.NET Core que se llama ".vs / config / applicationhost.config" Inicialmente tiene 67 teclas. Puedes verlo por ti mismo aquí, en el Editor de configuración.
Este archivo llamado ".vs / config / applicationhost.config" tiene la configuración predeterminada que lleva el Web.config para poder trabajar, y uno de ellos es ese controlador. También puedes verlo aquí.
El problema es que ese archivo tiene ese controlador y lo que publicas va a heredar ese controlador.
Tiene dos soluciones, comente en la línea de su web.config publicado o elimine ese controlador de ".vs / config / applicationhost.config"
La respuesta anterior no funcionó para mí, sin embargo, el comentario de DavidG resolvió mi problema, así que voy a publicar como respuesta en caso de que ayude a alguien más.
Para mí, no lo estaba ejecutando como una sub-aplicación, y un proyecto que había estado trabajando para mí sin problemas durante más de un año, de repente dejó de trabajar con este problema. Todavía no estoy seguro de lo que cambió. Cuando comenté o <add name="aspNetCore".../>
el <add name="aspNetCore".../>
el error persistió y esa línea se volvió a agregar automáticamente.
Para resolver el problema, agregué <remove name="aspNetCore" />
al archivo de configuración, justo arriba de la entrada <add name="aspNetCore"... />
, y las cosas comenzaron a funcionar nuevamente.
Lamentablemente, ninguna de las soluciones sugeridas funcionó para mí. Por algún milagro, supe que mi archivo applicationhost.config
había modificado en un asunto desafortunado, lo que hacía que apareciera el error "No se puede agregar una entrada de colección duplicada" cuando navegué a una página específica en mi aplicación de sitio web .NET Core.
Bajo la etiqueta <sites>
en applicationhost.config
, tuve lo siguiente:
<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>
El error HTTP 500.19 se me mostró cuando navegué a la página "/ SomePage". Como puede ver, por alguna razón había una etiqueta de <application>
para esta página específica. No tengo ni idea de porqué.
Eliminé toda la etiqueta <application>
para la ruta "/ SomePage", y todo comenzó a funcionar nuevamente.
Para continuar ejecutándose en IIS EXPRESS, vaya a la carpeta raíz donde se encuentra el archivo .sln.
Vaya a eliminar el archivo de .vs / config / applicationhost.config o guárdelo en un lugar temporal si tiene algo allí.
Cerrar / Re Abrir VS Studio, ejecutar de nuevo, funcionará.
Si necesita volver a agregar algo desde guardar applicationhost.config, solo compare esos dos, pero no veo lo que podría tener allí.
Tuve el mismo problema y en mi caso comentando la línea.
<add name="aspNetCore"...
resolvió el problema y surgió la pregunta "¿por qué funciona sin AspNetCoreModule"? El problema en mi caso fue que estaba agregando el sitio como una sub-aplicación en el sitio web predeterminado y estaba ubicado en wwwrootfolder. Creo que la configuración fue automáticamente recogida por el sitio web predeterminado y aplicada a todos los sitios de sub-aplicaciones.
Así que la solución fue moverlo como un sitio separado en otro puerto.