IIS express:无法添加"add"类型的重复集合条目,并将唯一键属性"name"设置为

Pra*_*iva 30 web-config iis-express visual-studio-2012

在Visual Studio,Solution-> Web.Project-> Properties-> Web中,我已将Project Url更改为 http://localhost:51123/,http://localhost:51123/NewProjectName并且我一直收到此错误:

" 无法在添加的每个模块上添加"add"类型的重复集合条目,并将唯一键属性"name"设置为".... "

添加删除标记有效,但是在我更改网址之前它应该是一个问题.有什么建议?

小智 47

我认为IIS Express可能有2个块<application>,两个都指向同一个physicalPath.

转到IIS Express配置文件: My Documents\IISExpress\config\applicationhost.config

搜索 NewProjectName

将根应用程序的physicalPath更改为其他内容.将其指向空文件夹.

应该看起来像这样:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 在Visual Studio 2015中,cofig文件的位置是solutionFolder\.vs\cofig.请注意.vs是隐藏的. (4认同)
  • 对于 IIS,配置文件是@C:\Windows\System32\inetsrv\config (3认同)
  • 与 VS 2017 相同 - 配置文件位于 [Solution Folder Root]\.vs\config\applicationhost.config 下。 (2认同)

Shi*_*rlz 18

此外,请确保在其中一个父文件夹中没有重复的web.config文件(例如:web.config备份文件).那是我的问题!


Ste*_*man 13

我开始随机收到此错误.我注意到iis express有两个站点.在此输入图像描述

这个双层导致IIS从第一个站点读取web.config,然后在\ WFM读取第二个.因此找到重复.我刚停止了所有网站,并从我的网站项目路径中删除了\ WFM.但是,您可以清除IIS Express中临时文件中的文件和文件夹.在我的情况下,我有多个版本的解决方案,一个解决方案的项目\用户配置在Web项目URL中有一个额外的路径.VS 2015添加了它,或者有人在自己的用户配置中检查了TFS.希望这有助于其他人.

  • 如果有人正在寻找这个:我必须删除解决方案路径中的.vs文件夹和<project-name> .user-file. (4认同)

Kyl*_*Mit 10

所有web.config文件在计算机,IIS,项目和文件夹级别的位置上都处于多个级联继承级别,并且每个级别都提供更高的特异性。

如果出现此错误,则意味着您有以下两种情况:

  1. 在同一文件中两次添加了相同的密钥(不太可能,因为您已经看过了)
  2. 相同的密钥已经存在于继承链中较高位置的单独文件中

#2可能有很多不同的根本原因,但是如果您想绕开它们,则可以删除以前的任何声明,然后在该级别重新添加自己的声明(我会为获得高品质的功能付出很多钱)。

因此,只需<remove>为所有令人反感的元素添加这样的标签:

<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>
Run Code Online (Sandbox Code Playgroud)


She*_*har 8

如果使用与项目文件夹相同的物理路径创建IIS网站,然后使用它为项目创建虚拟文件夹,您将看到此问题.
您的Web.config文件正在加载两次.
相反,正如orjanto指出的那样,创建一个空文件夹并将IIS网站指向它,然后使用它从Visual Studio创建一个虚拟文件夹.