IIS express: ne peut pas ajouter l'entrée collection dupliquée de type "add" avec l'attribut clé unique "name" défini à
dans Visual studio, Solution - > Web.Projet - > Propriétés - > Web, j'ai changé L'Url de mon projet de http://localhost:51123/
http://localhost:51123/NewProjectName
et j'obtiens cette erreur:
" ne peut pas ajouter l'entrée collection dupliquée de type ' add 'avec l'attribut clé unique' name ' défini à ...." sur chaque module.
ajouter une balise remove fonctionne mais alors cela aurait dû être un problème avant même que j'ai changé l'url. Toutes les suggestions?
11 réponses
je pense que IIS Express a probablement 2
allez au fichier de configuration IIS Express dans:My Documents\IISExpress\config\applicationhost.config
Recherche NewProjectName
changez le chemin physique pour l'application racine en quelque chose d'autre. Pointer vers un dossier vide.
Devrait ressembler à quelque chose comme ceci:
<site name="NewProjectName" id="1">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\Temp" />
</application>
<application path="/NewProjectName" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\sourcecode\NewProjectName" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:51123:localhost" />
</bindings>
</site>
assurez-vous aussi que vous n'avez pas de Web dupliqué.fichier de configuration dans l'un des dossiers parent (par exemple: un web.config fichier de sauvegarde). C'était le problème avec la mienne!
j'ai commencé à recevoir cette erreur au hasard. J'ai remarqué que l'iis express avait deux sites.
cette double couche amène IIS à lire le web.config à partir de la première et de la deuxième à \WFM. par conséquent, trouver des doublons. J'ai juste arrêté tous les sites et supprimé le \WFM de mon chemin de projet web. Cependant, vous pouvez aller nettoyer les fichiers et les dossiers de votre fichier temp dans IIS express. Dans mon cas, j'ai eu plusieurs versions de la solution et un le projet\user config de solution avait un chemin supplémentaire dans L'URL du projet web. VS 2015 l'a ajouté, ou quelqu'un a enregistré dans sa propre configuration utilisateur sur TFS. Espérons que cela aide les autres.
si vous créez un site Web IIS avec le chemin physique le même que le dossier du projet, et puis l'utiliser créer un dossier virtuel pour le projet, vous allez voir ce problème.
Votre Web.config
le fichier est chargé deux fois.
Au lieu de cela, comme orjanto l'a fait remarquer, créez un dossier vide et pointez le site IIS vers celui-ci, puis utilisez-le pour créer un dossier virtuel à partir de Visual Studio.
web.config
les fichiers de travail à partir de plusieurs niveaux d'hérédité en cascade au niveau de la machine, de L'IIS, du projet et du dossier, chacun fournissant un degré plus élevé de spécificité.
Si vous obtenez cette erreur, cela signifie que vous avez:
- a ajouté la même clé deux fois dans le même fichier (peu probable puisque vous l'auriez vu)
- La même clé existe déjà dans un fichier séparé plus haut de l'héritage de la chaîne
il peut y avoir beaucoup de causes profondes différentes pour #2, mais si vous voulez les mettre de côté, vous pouvez simplement supprimer toutes les déclarations précédentes et ensuite ajouter à nouveau les vôtres à ce niveau (je paierais cher pour une fonctionnalité upsert).
il suffit donc d'ajouter <remove>
les balises comme ceci pour toute récidive éléments:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="ErrorLog" />
<remove name="ErrorMail" />
<remove name="ErrorFilter" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
</system.webServer>
L'Url de mon projet dans l'onglet Web à l'intérieur des propriétés du projet pointait vers la mauvaise url et je n'ai pas pu la changer ("voulez-vous créer un répertoire virtuel?"et VS était verrouillé dans une boucle (Yes -> Unable to create, No -> Operation cancelled) jusqu'à ce que je revienne manuellement à L'Url dans l'état (incorrect) qu'il était avant. La solution était D'exécuter VS en tant qu'administrateur. J'ai pu changer cette url et tout a commencé à fonctionner. Espérons que cela aide!
vous pouvez trouver qu'après la mise à niveau vers le dernier service pack de windows 10 juin 2017, ce problème est dû au fait que certains noeuds semblent maintenant apparaître sous la configuration racine (machine.config). J'ai retiré mes copies du web.config et tout a fonctionné à nouveau.
j'ai eu un problème du même type. L'exécution de mon site publié sur IIS, la même erreur a été montrée.
j'ai vu un web.config
le fichier wwwroot
dossier (hors dossier d'application).
J'ai supprimé ce fichier et l'application s'est bien déroulée.
web.config
Fichier placé dans un mauvais dossier (au-dessus de votre application de dossier).
Bonne chance!
réponse @orjanto posté résolu le problème pour moi, mais j'avais un problème supplémentaire sur le dessus de cela. après avoir corrigé, Internet Explorer pensait toujours que ma page HTML était un répertoire au lieu d'un fichier.
j'avais des copies dans mon fichier de configuration IIS Express:
<site name="MyAPI" id="56">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" />
</application>
<application path="/login.html" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:57018:localhost" />
<binding protocol="https" bindingInformation="*:44302:localhost" />
</bindings>
</site>
Notez le chemin= " / login.html" dans la deuxième entrée de
ma page redirigeait vers " localhost: 57018 / login.html/" comme il a été un répertoire.
suppression de la deuxième entrée a corrigé le problème avec les doublons de fichier de configuration, cependant J'ai continué à avoir un problème où Internet Explorer semblait penser que /login.html / était un répertoire (Internet Explorer 11). Pour diagnostiquer le problème, J'ai vérifié que le Chrome et le Chrome fonctionnaient bien.
Je suis allé dans Internet Explorer, est allé à Outils > Options Internet > Onglet Général. Puis, dans la section "historique de navigation", j'ai supprimé L'historique, les Cookies et Site Web Data, & Temp. Des Fichiers Internet.
j'ai eu le même problème. Il s'est avéré que j'avais un projet différent qui utilise IISExpress avec le même numéro de port. Une fois j'ai changé le projet d'utiliser un numéro de port différent, l'erreur a disparu.
j'ai eu le même problème, voici ce que j'ai fait:
- j'ai changé les paramètres de mon serveur de IIS Local à IIS Express:
- si cela ne fonctionne toujours pas, j'ai changé le numéro de port en port différent cliquez ensuite sur le bouton Créer un répertoire virtuel. Nettoyer le solution puis reconstruire.