web-dev-qa-db-fra.com

Impossible d'ajouter une entrée de collection en double de type 'add' avec l'attribut de clé unique 'name' défini sur 'aspNetCore

J'ai récemment publié mon application ASP.NET Core sur mon hôte. Je frappe une erreur HTTP 500.19.

IIS 8.5 indique que le problème est le suivant: -

"Impossible d'ajouter une entrée de collection en double du type 'add' avec l'attribut clé unique 'name' défini sur 'aspNetCore'"

Il met également en évidence cette ligne d’ajout de clé dans ma configuration system.webServer: -

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

Je ne sais pas trop quoi faire à ce sujet. Il semble qu'il y ait une instance dupliquée de ceci, alors j'ai essayé de le renommer mais il demande toujours de l'ajouter à nouveau?

Voici mon 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>
18
Phill Wiggins

La réponse ci-dessus n'a pas fonctionné pour moi, mais le commentaire de DavidG a résolu mon problème, donc je vais poster comme réponse au cas où cela aiderait quelqu'un d'autre.

Pour moi, j'étais pas en l'exécutant comme une sous-application, et un projet qui ne fonctionnait pour moi aucun problème depuis plus d'un an a soudainement cessé de fonctionner avec ce problème. Toujours pas sûr de ce qui a changé. Lorsque j'ai commenté ou supprimé le <add name="aspNetCore".../>, l'erreur a persisté, puis cette ligne a été automatiquement ajoutée de nouveau.

Pour résoudre le problème, j'ai ajouté <remove name="aspNetCore" /> au fichier de configuration, juste au-dessus de l'entrée <add name="aspNetCore"... />, et les choses ont recommencé à fonctionner.

13
Brian S

Aucune des solutions suggérées n'a fonctionné pour moi malheureusement. Par miracle, j’ai appris que mon fichier applicationhost.config avait été modifié dans une affaire malheureuse. L’erreur «Impossible d’ajouter une entrée de collection dupliquée» apparaît lorsque je suis allé sur une page spécifique de mon application de site Web .NET Core.

Sous la balise <sites> dans applicationhost.config, j'avais le texte suivant:

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

L'erreur HTTP 500.19 m'a été signalée lorsque j'ai accédé à la page "/ SomePage". Comme vous pouvez le constater, pour une raison quelconque, il existait une balise distinct <application> pour cette page spécifique. Je ne sais pas pourquoi.

J'ai supprimé l'intégralité de la balise <application> pour le chemin "/ SomePage" et tout a recommencé à fonctionner.

4
eightx2

J'ai eu le même problème et dans mon cas commentant la ligne

<add name="aspNetCore"...

résolu le problème et a soulevé la question "pourquoi ça marche sans AspNetCoreModule". Le problème dans mon cas était que j’ajoutais le site en tant que sous-application dans defaultwebsite et que celui-ci se trouvait dans le dossier wwwrootfolder. Je pense que la configuration a été automatiquement reprise par le site Web par défaut et appliquée à tous les sites de sous-applications.

Ce lien a aidé

La solution consistait donc à le déplacer en tant que site distinct sur un autre port.

3
eugen

J'ai fait face à ce problème avec vs 2017 sur un projet qui fonctionnait bien sans changer le web.config. En regardant ces messages, je me suis rendu compte que ce pouvait être un problème d’express IIS et j’ai résolu le problème en supprimant simplement le dossier .vs et en le redémarrant.

3
Riccardo

Pour continuer à exécuter sur IIS EXPRESS, accédez au dossier racine où se trouve le fichier .sln.

allez supprimer le fichier de .vs\config\applicationhost.config ou enregistrez dans un endroit temporaire si vous avez quelque chose.

Close/Re Open VS Studio, relancez l’opération, fonctionnera.

Si vous devez ajouter quelque chose en retour à partir de save applicationhost.config, comparez-les simplement, mais je ne vois pas ce que vous pourriez y trouver.

1
SilentTremor

Cette erreur est due au fait qu'il existe dans ASP.NET Core un fichier racine appelé ".vs\config\applicationhost.config" Initialement, il contient 67 clés. Vous pouvez le voir vous-même ici, dans l'éditeur de configuration.  Where to find the ApplicationHost.config

Ce fichier appelé ".vs\config\applicationhost.config" contient les paramètres par défaut définis par le fichier Web.config pour pouvoir fonctionner. L'un d'eux est ce gestionnaire . Vous pouvez également le voir ici.  Key aspNetCore

Le problème est que ce fichier a ce gestionnaire et ce que vous publiez héritera de ce gestionnaire.

Vous avez deux solutions, comment sur la ligne de votre web.config publié ou supprimez ce gestionnaire du fichier ".vs\config\applicationhost.config"

0
ccassob

Dans mon cas, le problème était dû à la création d'un chemin dans l'onglet Débogage de mon projet Web afin que l'application s'ouvre sur une page donnée. Cela provoque deux ajouts silencieux au fichier .vs\config\applicationhost.config, similaires à celui observé par eightx2.

Dans :

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

Dans :

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

où une entrée similaire existe déjà. C'est la racine du problème.

Le message d'erreur, malheureusement, est complètement trompeur.

La solution consiste à renommer applicationhost.config, à redémarrer VS et à le laisser reconstruire le fichier. C'est pourquoi la solution de Ricardo consistant à supprimer l'intégralité du dossier .vs fonctionne également.

0
MonteChristo