WEB API 2带有id的路由

时间:2016-05-17 13:50:34

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

我有一个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" }
);

我收到以下错误

控制器'控制器'未找到任何操作。符合名称' 2000'

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您正在使用属性路由:

[Route("{id}")]

但是你确定要告诉Web API使用它吗?尝试将其添加到配置代码中:

webApiConfiguration.MapHttpAttributeRoutes();

有关详细信息see here