【发布时间】:2013-08-09 14:10:49
【问题描述】:
我在ApiController 中设置了以下两个操作:
[POST("api/admin/image/{id}/upload")]
[Authorize(Roles = RoleNames.Administrator)]
public Foo UploadVersion(int id)
public Bar Post(int id, Baz x) {}
鉴于此路由配置,它们存在冲突:
context.Routes.MapHttpRoute(
name: "Admin_Api",
routeTemplate: "api/admin/{controller}/{id}",
defaults: new
{
id = RouteParameter.Optional
});
我的猜测是UploadVersion 也通过路由映射获得了某种默认路由,但我该如何防止呢?
如果有人想知道我要做什么:
POST /api/admin/image/{id}/upload -> UploadVersion()
POST /api/admin/image/{id} -> Post()
【问题讨论】:
-
尝试路由 "api/admin/{controller}/{id}/{action}。在路由默认值中添加 action="DefaultAction"。为 Post 方法添加 [ActinoName("DefaultAction")]。详情在blog.appliedis.com/2013/03/25/…
-
我无法让它工作。无论我对这两条路线做什么,它们似乎都会发生碰撞。现在我已经将
Post()更改为Put(),所以我至少可以测试一下功能。
标签: c# asp.net-web-api attributerouting