C# 升级到WebApi.Core错误-直接路由不能使用参数';控制器';

C# 升级到WebApi.Core错误-直接路由不能使用参数';控制器';,c#,asp.net-web-api,asp.net-mvc-routing,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抛出错误“直接路由无法使用参数‘controller’。请指定一个文本路径来代替此参数以创建到控制器的路由” 调用时,初始化Global.asax.cs中的HttpConfiguration时会引发此错误 GlobalConfiguration.Configure(WebApiConfig.

由于依赖于另一个项目,我被迫将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);
似乎是核心库导致了这个问题。当我只更新客户端时,它没有抛出错误

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

[Route("api/storage/series/{series}/documentId/{documentId}")]
但是,由于依赖应用程序的数量太多,删除这些应用程序并不是一个可行的解决方案


在Google/Bing上,几乎没有任何有用的信息。有人能提供关于这个错误的见解,并建议我如何着手解决它吗?

找到了答案,或者说我的同事找到了答案。如果你看一下错误,现在看起来很明显。这是由于我们的一些控制器上包含{controller}的路由属性(而不是我在问题中使用的示例)。e、 g

[Route("api/{controller}/editGroups")]
将此更改为使用硬编码的控制器名称(如下所示),修复了该问题

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

为避免误解:在“ASP.NET核心Web应用程序”中,至少在.NET核心2.0中,可以在“路由”属性中使用控制器占位符,但要使用方括号。例如,
[Route(“api/[controller]/editGroups”)]
也不应该在方法中使用“action”一词:(api/documents/{action})=>FALSE(api/documents/{method})=>TRUE