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

时间:2015-08-12 09:12:00

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

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

调用

时,在Global.asax.cs中初始化HttpConfiguration时会抛出错误
GlobalConfiguration.Configure(WebApiConfig.Register);

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

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

[Route("api/storage/series/{series}/documentId/{documentId}")]

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

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

1 个答案:

答案 0 :(得分:18)

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

[Route("api/{controller}/editGroups")]

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

[Route("api/documents/editGroups")]