无法添加“add”类型的重复集合条目,并将唯一键属性“name”设置为“Access-Control-Allow-Origin”

时间:2017-03-16 13:59:24

标签: c# asp.net asp.net-web-api

我创建了一个Web API,它之前工作正常。当我尝试浏览API时,我突然收到以下错误。

Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'Access-Control-Allow-Origin'

Config Source:    30: <customHeaders>

31: <add name="Access-Control-Allow-Origin" value="*"/>

32: <add name="Access-Control-Allow-Headers" value="Content-Type"/>

我在web.config中有以下代码

<httpProtocol>
 <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*"/>
   <add name="Access-Control-Allow-Headers" value="Content-Type"/>
 </customHeaders>

任何人都可以告诉我这里可能存在什么问题,因为之前工作正常。

2 个答案:

答案 0 :(得分:5)

如果已发布或发布,请检查执行转换的其他web.configs。

听起来你的web.release.config中可能有一个转换,它正在添加一个重复的条目。如果有,它可能是这样的:

<add name="Access-Control-Allow-Origin" value="*" xdt:Transform="Insert" />

或者,如果API位于IIS中的子应用程序中,则等效条目可能位于主站点的web.config中。在这种情况下,您需要在添加行上方的web.config中添加类似的内容:

<remove name="Access-Control-Allow-Origin" />

答案 1 :(得分:2)

如错误消息所示,存在重复的收集条目。您可以尝试在实际添加上方添加以下部分:

<remove name="Access-Control-Allow-Origin">

或者简单地,您可以注释该行:

<add name="Access-Control-Allow-Origin" value="*"/>

网站将继承父级的设置。这应该是此问题的原因。您可以检查父网站内容文件夹中是否有一个web.config文件(例如C:\ inetpub \ wwwroot \ arif \或C:\ inetpub \ wwwroot)以及其中的重复集合条目。