我有一个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'
答案 0 :(得分:0)
完全删除我们的webApiConfiguration.Routes.MapHttpRoute部分并添加id:int,因为我真的想要一个int而不是一个字符串修复了这个问题。我认为标准路由和属性路由之间可能存在误解,并且可能是因为标准模型是基于MVC的。
答案 1 :(得分:0)
您正在使用属性路由:
[Route("{id}")]
但是你确定要告诉Web API使用它吗?尝试将其添加到配置代码中:
webApiConfiguration.MapHttpAttributeRoutes();
有关详细信息see here。