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

标签 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”。指定文字路径代替此参数以创建到 Controller 的路由。

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

GlobalConfiguration.Configure(WebApiConfig.Register);

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

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

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

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

在 Google 上/Binging 错误中,有用的信息几乎为零。任何人都可以提供有关此错误的任何见解并建议我如何解决它吗?

最佳答案

解决了这个问题,或者更确切地说,我的同事做到了。如果您查看错误,现在看起来很明显。这是由于我们的某些 Controller (不是我在问题中使用的示例)上的路由属性包含 {controller}。例如

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

将其更改为使用硬编码的 Controller 名称(如下所示)解决了该问题。

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

关于c# - 升级到WebApi.Core报错-直接路由不能使用参数 'controller',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960796/

相关文章:

c# - 是否可以在 ASP.NET Web API 中发送空格参数?

c# - 如何让 NUnit 测试项目使用自定义异常过滤器?

asp.net - 如何重写代码以在 Asp Net Web Api 中使用具有依赖注入(inject)的 IAuthorizationFilter 而不是具有服务位置的 AuthorizeAttribute?

javascript - 使用 jquery 将数据发送到 MVC Controller

c# - 对象关系映射 - 插入更新存储过程

c# - AttributeRouting 修复两个名为 Id 的参数

具有可选 URL 段的 ASP.NET 路由

asp.net-mvc - 参数值未在 ASP.NET MVC 路由中传递

c# - 自定义属性的扩展方法

c# - XNA 在运行时动态更改游戏服务