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

Phi*_*ins 23 iis-8.5 asp.net-core

我最近向我的主机发布了我的ASP.NET核心应用程序.我正在点击HTTP错误500.19.

IIS 8.5说问题是: -

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

它还突出显示了我的system.webServer配置中的这个关键添加行: -

<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule"      
</handlers>
Run Code Online (Sandbox Code Playgroud)

我不确定该怎么做.它看起来好像有一个重复的实例,所以我尝试重命名这个,但它仍然要求再次添加它?

这是我的web.config: -

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
  Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->

  <system.webServer>
  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>

<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Bri*_*n S 16

上面的答案对我不起作用,但是DavidG的评论确实解决了我的问题,所以如果能帮助其他人,请发布作为答案.

对我来说,我并没有将它作为子应用程序运行,而且一年多来一直为我工作的项目突然停止了解决这个问题.还是不确定是什么改变了.当我注释掉或删除了<add name="aspNetCore".../>持久存在的错误,然后该行自动重新添加.

为了解决这个问题,我<remove name="aspNetCore" />在配置文件中添加了<add name="aspNetCore"... />条目正上方,然后事情又开始了.

  • 这是 Voodoo 编程的一个很好的例子。它有效,但到底为什么。 (3认同)

Sil*_*mor 7

要继续在IIS EXPRESS上运行,请转到.sln文件所在的根文件夹。

请从.vs \ config \ applicationhost.config中删除文件,或在其中有文件的情况下将其保存在临时位置。

关闭/重新打开VS Studio,再次运行即可。

如果您需要从save applicationhost.config中添加一些内容,只需将两者进行比较即可,但是我看不到那里可能有什么。

  • 这应该是正确的答案。我在此配置中有一个重复的条目,删除该文件后,它创建了一个没有重复的新文件,并且可以正常工作。谢谢@SilentTremor (2认同)

eig*_*tx2 6

不幸的是,没有建议的解决方案对我有用。通过一个奇迹,我得知我的applicationhost.config文件已被不幸地修改,当我导航到.NET Core网站应用程序中的特定页面时,出现“无法添加重复的集合条目”错误。

在中的<sites>标签下applicationhost.config,我有以下内容:

<site name="MyWebsite" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\___\solutionname\MyWebsite" />
    </application>
    <application path="/SomePage" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\___\solutionname\MyWebsite" />
    </application>
    <bindings>
        <binding protocol="https" bindingInformation="*:12345:localhost" />
    </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

当我导航到页面“ / SomePage”时,显示了500.19 HTTP错误。如您所见,由于某种原因,有一个单独的 <application>,此特定页面标签。我不知道为什么。

我删除<application>了“ / SomePage”路径的整个标记,然后一切又开始正常工作。

  • 谢谢,这也为我修好了。我采取的措施是,我希望我的应用程序在某个页面上的调试 (F5) 下打开,我在项目设置中添加了该页面,但这随后导致 applicationHost.config 中的上述条目破坏了我的应用程序 (2认同)
  • @System24Tech 这里有完全相同的问题;我更改了服务器部分中的“项目 URL”,而不是“开始操作”部分中的“特定页面”。哎哟!盲目点击,不去思考我在做什么...... (2认同)

小智 6

我在 vs 2017 的一个项目中遇到了这个问题,该项目在不更改 web.config 的情况下运行良好。看着这篇文章,我意识到这可能是一个 IIS express 问题,我解决了简单地删除 .vs 文件夹并重新启动 vs.


eug*_*gen 3

我遇到了同样的问题,就我而言,评论该行

<add name="aspNetCore"...
Run Code Online (Sandbox Code Playgroud)

解决了这个问题并提出了问题“为什么它在没有 AspNetCoreModule 的情况下工作”。我的问题是,我将该网站添加为 defaultwebsite 中的子应用程序,并且它位于 wwwroot 文件夹中。我认为该配置是由默认网站自动获取的,并应用于所有子应用程序站点。

此链接有帮助

因此,解决方案是将其作为另一个端口上的单独站点移动。