39

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

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

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

4

14 回答 14

60

我认为 IIS Express 可能有 2 个<application>块,并且两者都将指向相同的物理路径。

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

搜索NewProjectName

将根应用程序的物理路径更改为其他内容。将其指向一个空文件夹。

应该看起来像这样:

<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>
于 2013-08-30T06:57:30.637 回答
24

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

于 2015-04-29T04:59:01.063 回答
17

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

在 IIS express 中运行的两个网站的屏幕截图

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

于 2016-02-03T19:22:19.313 回答
14

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

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

  1. 在同一个文件中添加了两次相同的密钥(不太可能,因为你会看到它)
  2. 相同的键已经存在于继承链更高的单独文件中

#2 可能有很多不同的根本原因,但如果你想避开它们,你可以删除任何以前的声明,然后在该级别重新添加你自己的声明(我会为 upsert 功能支付很多钱)。

所以只需<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>
于 2018-02-27T14:37:21.840 回答
12

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

于 2014-10-14T19:07:09.007 回答
2

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

于 2018-07-25T18:44:33.167 回答
1

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

显示隐藏物品

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

于 2020-01-08T18:28:38.277 回答
1

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

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

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

祝你好运!

于 2017-12-12T13:53:11.883 回答
1

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

请注意第二个 <application> 条目中的 path="/login.html"。

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

删除第二个条目解决了配置文件重复的问题,但是我仍然遇到 Internet Explorer 似乎认为 /login.html/ 是一个目录(Internet Explorer 11)的问题。为了诊断问题,我检查了 Chrome 并且 Chrome 运行良好。

我进入 Internet Explorer,进入工具 > Internet 选项 > 常规选项卡。然后在“浏览历史”部分下,我删除了历史、Cookies 和网站数据,以及温度。互联网文件。

于 2018-02-19T15:45:39.463 回答
1

我尝试了上述所有方法,但对我没有任何作用。我一直在收到类似的错误

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

最后我把我的服务器从

项目属性构建中的IIS Express本地 IIS,如下所示。

在此处输入图像描述

它对我有用。

于 2019-05-30T11:48:37.030 回答
1

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

于 2016-03-17T12:48:59.497 回答
1

您可能会发现,在升级到 2017 年 6 月最新的 windows 10 服务包后,此问题是因为某些节点现在似乎出现在根配置 (machine.config) 下。我从 web.config 中删除了我的重复项,并且一切都恢复了。

于 2017-06-16T13:28:59.923 回答
-1

我有同样的问题,这就是我所做的:

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

在此处输入图像描述

  • 如果它仍然不起作用,我将端口号更改为不同的端口号,然后单击创建虚拟目录按钮。清洁解决方案,然后重建。

在此处输入图像描述

于 2018-08-08T14:01:27.840 回答
-2

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

于 2019-01-16T04:08:50.453 回答