在Visual Studio,Solution-> Web.Project-> Properties-> Web中,我已将我的Project Url从http://localhost:51123/
更改为http://localhost:51123/NewProjectName
并且我一直收到此错误:
“无法在添加的每个模块上添加”add“类型的重复集合条目,并将唯一键属性”name“设置为.... ”。
添加删除标记有效但是在我更改网址之前它应该是一个问题。有什么建议吗?
答案 0 :(得分:46)
我认为IIS Express可能有两个<application>
- 块,两者都指向同一个物理路径。
转到: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>
答案 1 :(得分:15)
另外,请确保您在其中一个父文件夹中没有重复的web.config文件(例如:web.config备份文件)。那是我的问题!
答案 2 :(得分:12)
我开始随机收到此错误。我注意到iis express有两个站点。
这个双层导致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,项目和文件夹级别位置处理多个级联继承级别,每个文件都提供更高程度的特异性。
如果您收到此错误,则表示您:
#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)
我遇到了同样的问题,这是我所做的:
答案 11 :(得分:0)
我尝试了所有上述方法,但对我没有任何帮助。我一直在收到类似
的错误Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'QueryStringModule'
最后,我从
更改了服务器 在项目属性版本中,从IIS Express 到本地IIS 。
对我有用。
答案 12 :(得分:0)
答案 13 :(得分:-1)
只需更改另一个应用程序尚未使用的端口号即可使用