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

时间:2013-08-29 09:17:23

标签: visual-studio-2012 web-config iis-express

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

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

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

14 个答案:

答案 0 :(得分:46)

我认为IIS Express可能有两个<application> - 块,两者都指向同一个物理路径。

转到:My Documents\IISExpress\config\applicationhost.config

中的IIS Express配置文件

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

答案 1 :(得分:15)

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

答案 2 :(得分:12)

我开始随机收到此错误。我注意到iis express有两个站点。 enter image description here

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

答案 3 :(得分:8)

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

答案 4 :(得分:7)

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

如果您收到此错误,则表示您:

  1. 在同一个文件中添加了两次相同的密钥(不太可能,因为您会看到它)
  2. 相同的密钥已存在于继承链上方的单独文件中
  3. #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>
    

答案 5 :(得分:0)

项目属性中的Web选项卡中的My Project Url指向错误的URL并且我无法更改它(“您要创建虚拟目录吗?”并且VS被锁定在一个循环中(是 - &gt;无法创建) ,No - &gt;取消操作)直到我手动将Url恢复到之前的(错误)状态。解决方案是以管理员身份运行VS.我能够更改该URL并且一切都开始工作。希望它有所帮助!< / p>

答案 6 :(得分:0)

您可能会发现在升级到2017年6月最新的Windows 10 Service Pack之后,出现此问题的原因是某些节点现在似乎出现在根配置(machine.config)下。我从web.config中删除了我的副本,这一切都再次起作用。

答案 7 :(得分:0)

我遇到了同类型的问题。运行我在IIS上发布的站点,显示了相同的错误。

我在web.config文件夹中看到了一个wwwroot文件(在应用程序文件夹之外)。 我删除了这个文件,应用程序运行正常。

查找放置在错误文件夹中的web.config文件(位于文件夹应用程序上方)。

祝你好运!

答案 8 :(得分:0)

answer发布的@orjanto为我解决了问题,但我还有一个问题。 修复后,Internet Explorer仍然认为我的HTML页面是目录而不是文件。

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

请注意第二个&lt; application&gt;中的path =“/ login.html”。条目。

我的网页重定向到“localhost:57018 / login.html /”,就像它是一个目录。

删除第二个条目修复了配置文件重复的问题,但是我仍然遇到一个问题,Internet Explorer似乎认为/login.html/是一个目录(Internet Explorer 11)。为了诊断问题,我检查了Chrome和Chrome工作正常。

我进入了Internet Explorer,转到了Tools&gt;互联网选项&gt;常规选项卡。然后在“浏览历史记录”部分下,我删除了历史记录,Cookie和网站数据,&amp;温度。互联网文件。

答案 9 :(得分:0)

我有同样的问题。原来,我有一个不同的项目,该项目使用具有相同端口号的IISExpress。一旦我将项目更改为使用其他端口号,错误就消失了。

答案 10 :(得分:0)

我遇到了同样的问题,这是我所做的:

  • 我将服务器设置从“本地IIS”更改为IIS Express:

enter image description here

  • 如果仍然无法使用,我将端口号更改为其他端口 编号,然后单击创建虚拟目录按钮。清洁 解决方案,然后重建。

enter image description here

答案 11 :(得分:0)

我尝试了所有上述方法,但对我没有任何帮助。我一直在收到类似

的错误
Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'QueryStringModule'

最后,我从

更改了服务器 在项目属性版本中,从

IIS Express 本地IIS

enter image description here

对我有用。

答案 12 :(得分:0)

什么对我有用。我删除了{projectFolderParent} /。vs / config(您必须“显示隐藏的文件夹/文件”)

Showing Hidden Items

删除后,我重新启动计算机。

答案 13 :(得分:-1)

只需更改另一个应用程序尚未使用的端口号即可使用