Web API路由,两条路由匹配
本文关键字:路由 两条 API Web | 更新日期: 2023-09-27 18:27:06
我在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()
根据您设置的路由,它们是相同的路由,无法区分。你每次都会得到这条路线:
POST /api/admin/image/{id} -> Post()
尝试修改你的路线,使其看起来像这样:
POST /api/admin/image/upload/{id} -> UploadVersion()
POST /api/admin/image/{id} -> Post()