升级到WebApi.Core错误 - 直接路由不能使用参数'controller'

B-L*_*Lat 10 c# asp.net-mvc-routing asp.net-web-api

由于依赖于另一个项目,我被迫将Microsoft.AspNet.WebApi.Client和Microsoft.AspNet.WebApi.Core从5.0.0.0版升级到5.2.0.0现在我的API抛出错误"直接路由不能使用参数'controller'.指定一个文字路径代替这个参数来创建一个到控制器的路径".

调用时,在Global.asax.cs中初始化HttpConfiguration时会抛出错误

GlobalConfiguration.Configure(WebApiConfig.Register);
Run Code Online (Sandbox Code Playgroud)

它似乎是导致问题的核心库.当我更新客户端时,它没有抛出错误.

我注意到如果我从项目中的所有控制器注释掉路由属性,那么它不再抛出错误,例如

[Route("api/storage/series/{series}/documentId/{documentId}")]
Run Code Online (Sandbox Code Playgroud)

然而,由于依赖应用程序的数量,删除这些不是可行的解决方案.

在谷歌/ Binging上的错误,其中几乎没有任何有用的信息.任何人都可以提供有关此错误的任何见解,并建议我如何修复它?

B-L*_*Lat 20

想出这个,或者更确切地说是我的同事.如果你看一下这个错误,现在看来很明显.这是由于我们的一些控制器上的路由属性(只是我在问题中使用的示例)包含{controller}.例如

[Route("api/{controller}/editGroups")]
Run Code Online (Sandbox Code Playgroud)

更改此选项以使用硬编码控制器名称,如下所示,修复了问题.

[Route("api/documents/editGroups")]
Run Code Online (Sandbox Code Playgroud)