此错误刚刚开始发生。一切正常,然后在进行WebAPI Get调用时突然发生此错误。
500.19 - >无法添加“add”类型的重复集合条目,并将唯一键属性“name”设置为“aspNetCore”
在WebAPI项目中,我可以更改项目属性中的“App URL”,这将创建一个新的IIS应用程序,使用此应用程序,现在一切正常。所以,如果我去IIS中删除原始应用程序。返回到Visual Studio,然后重新输入旧的App URL,以便在IIS中以旧名称重新创建App,然后运行它。它又失败了。这是全新的。无论哪个IIS应用程序正在执行代码,完全相同的代码库,但原始的代码库在下面描述的情况下不再起作用 - 即使在删除它并重新创建它之后。它一定是个疯狂的bug,因为我没有修改任何东西。它只是在测试过程中自动开始中断。
只有当我调用的调用在URI id中有短划线字符时才会发生 例: http://mysite/api/products/product10工作正常,代码执行 但: http://mysite/api/products/product10-1不起作用,WebAPI永远不会被击中,错误如下所示。我没有对routing或web.config进行任何更改,也没有对Controller进行任何更改。我不明白这里发生了什么变化。
在Windows / IIS上运行的WebAPI .NET Core 2.0。
无法添加“add”类型的重复集合条目,并将唯一键属性“name”设置为“aspNetCore”
4: <handlers>
5: <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
6: </handlers>
签名:
[Produces("application/json")]
[Route("api/Product")]
public class ProductController : Controller
{
// GET api/values/5
[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
答案 0 :(得分:0)
我们的解决方案是重写我们为 Startup.cs 文件中的架构 url 所做的。由于 Rewrite 对所有 url 进行了 url 修改,因此所有包含破折号的请求都会受到影响。我们已从 Startup.cs 中删除了以下行,它按预期工作。
.UseRewriter(new RewriteOptions().AddRewrite(@"(.*)/([a-z-]+)(\d{1,2}.\d{1,2}.\d{1,2})", "$1/$2$3.json", true))
这是为了摆脱架构 url 中的 .json 扩展名而编写的,但影响了所有 url。 查看您的 Startup.cs 并查找类似的内容。您可能进行了影响所有网址的修改。