Dans Visual studio, Solution-> Web.Project-> Propriétés-> Web, j'ai modifié mon URL de projet de http://localhost:51123/
à http://localhost:51123/NewProjectName
et j'obtiens toujours l'erreur suivante:
" Impossible d'ajouter une entrée de collection en double de type 'add' avec l'attribut de clé unique 'name' défini sur .... " pour chaque module ajouté.
L'ajout d'une balise remove fonctionne, mais cela aurait dû être un problème avant même que je modifie l'URL. Aucune suggestion?
Je pense que IIS Express a probablement 2 blocs <application>
- et les deux pointeront sur le même chemin physique.
Accédez au fichier de configuration IIS Express dans: My Documents\IISExpress\config\applicationhost.config
Rechercher NewProjectName
Remplacez physicalPath pour l'application racine par quelque chose d'autre. Pointez-le sur un dossier vide.
Devrait ressembler à 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 également de ne pas avoir un fichier web.config en double dans l'un des dossiers parents (par exemple, un fichier de sauvegarde web.config). C'était le problème avec le mien!
J'ai commencé à avoir cette erreur au hasard. J'ai remarqué que l'IIS Express avait deux sites.
Cette double couche amène IIS à lire le fichier web.config à partir du premier site et de l'autre en\WFM. donc trouver des doublons. Je viens d'arrêter tous les sites et de supprimer le fichier\WFM de mon chemin de projet Web. Cependant, vous pouvez supprimer les fichiers et les dossiers de votre fichier temporaire dans IIS express. Dans mon cas, j'avais plusieurs versions de la solution et le projet\user config d'une solution contenait un chemin supplémentaire dans l'URL du projet Web. VS 2015 l'a ajouté, ou quelqu'un a enregistré sa propre configuration d'utilisateur en TFS. J'espère que cela aide les autres.
Si vous créez un site Web IIS avec le même chemin physique que le dossier du projet, puis que vous l’utilisez pour créer un dossier virtuel pour le projet, vous allez voir le problème.
Votre fichier Web.config
est chargé deux fois.
Comme indiqué par orjanto, créez un dossier vide, pointez le site Web IIS sur celui-ci, puis utilisez-le pour créer un dossier virtuel à partir de Visual Studio.
Tous les fichiers web.config
fonctionnent avec plusieurs niveaux d'héritage en cascade au niveau de la machine, des emplacements IIS, du projet et des dossiers, chacun offrant un degré de spécificité supérieur.
Si vous obtenez cette erreur, cela signifie que vous avez soit:
Il peut y avoir beaucoup de causes fondamentales différentes pour # 2, mais si vous voulez les contourner, vous pouvez simplement supprimer toutes les déclarations précédentes, puis rajouter les vôtres à ce niveau (je paierais beaucoup d'argent pour une fonctionnalité d'upert ).
Ajoutez donc les balises <remove>
comme ceci pour tous les éléments incriminés:
<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>
J'ai eu le même problème, voici ce que j'ai fait:
J'ai eu le même problème. Il s'est avéré que j'avais un projet différent utilisant IISExpress avec le même numéro de port. Une fois que j'ai modifié le projet pour utiliser un numéro de port différent, l'erreur a disparu.
Mon URL du projet dans l'onglet Web dans les propriétés du projet indiquait une URL incorrecte et je ne pouvais pas le modifier ("Voulez-vous créer un répertoire virtuel?" Et VS était verrouillé dans une boucle (Oui -> Impossible de créer, Non -> Opération annulée) jusqu'à ce que je rétablisse manuellement l'URL à l'état (incorrect) qu'il était auparavant. La solution consistait à exécuter VS en tant qu'administrateur. J'ai pu modifier cette URL et tout a commencé à fonctionner. J'espère que cela aide!
J'ai eu un problème du même type. En exécutant mon site publié sur IIS, la même erreur a été affichée.
J'ai vu un fichier web.config
dans le dossier wwwroot
(hors du dossier de l'application) .
Recherchez un fichier web.config
placé dans un mauvais dossier (au-dessus de votre application de dossier).
Bonne chance!
Vous constaterez peut-être qu'après la mise à niveau vers le dernier service pack Windows 10 de juin 2017, ce problème est dû au fait que certains nœuds semblent maintenant apparaître sous la configuration racine (machine.config). J'ai enlevé mes doublons de web.config et tout a encore fonctionné.
Le répondre que @orjanto posté a résolu le problème pour moi, mais j'ai eu un problème supplémentaire en plus de cela. Après la réparation, Internet Explorer pensait toujours que ma page HTML était un répertoire et non un fichier.
J'avais des doublons 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 <application>.
Ma page redirigeait vers "localhost: 57018/login.html /" comme si c'était un répertoire.
La suppression de la deuxième entrée corrigeait le problème des doublons dans le fichier de configuration. Toutefois, Internet Explorer semblait toujours penser que /login.html/ était un répertoire (Internet Explorer 11). Pour diagnostiquer le problème, j'ai vérifié que Chrome et Chrome fonctionnaient bien.
Je suis allé dans Internet Explorer, puis dans Outils> Options Internet> Onglet Général. Puis, dans la section "Historique de navigation", j'ai supprimé l'historique, les cookies et les données de site Web, ainsi que les informations temporaires. Fichiers Internet.