【问题标题】:WEB API 2 Routes with id带有 id 的 WEB API 2 路由
【发布时间】:2016-05-17 13:50:33
【问题描述】:

我有一个 Owin Web API 2 项目我正在尝试使用以下路线

域/控制器/2000

ID 是 2000

在控制器中我有一个如下定义的动作

[HttpGet]
[Route("{id}")]
public IHttpActionResult Get(string id)
{
    return Ok(_someService.GetSomeObject(id));
}

我也在使用 RoutePrefix 如下

[RoutePrefix("caption")]

在 Owin 配置方法中,我声明了以下路由

webApiConfiguration.Routes.MapHttpRoute(
    name: "api",
    routeTemplate: "{controller}/{action}",
    defaults: new { Controller = "values" }
);

我收到以下错误

在控制器“Controller”上找不到与名称“2000”匹配的操作

【问题讨论】:

  • 您需要拨打MapHttpAttributeRoutes()吗?
  • @Lloyd 不,这就是答案,谢谢。把它作为答案,我会标记它;)

标签: rest routes asp.net-web-api2


【解决方案1】:

完全删除我们的 webApiConfiguration.Routes.MapHttpRoute 部分并添加 id:int 因为我真的想要一个 int 而不是字符串已经解决了这个问题。我认为标准路由和属性路由之间可能存在不匹配,这可能是因为标准模型是基于 MVC 的。

【讨论】:

    【解决方案2】:

    您正在使用属性路由:

    [Route("{id}")]

    但是,您是否确保告诉 Web API 使用它?尝试将此添加到配置代码中:

    webApiConfiguration.MapHttpAttributeRoutes();
    

    更多信息see here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多