在我的mvc应用程序中,我有三个不同的控制器:
JobsAdminController
应该在/api/admin/jobs
提供并且有[RoutePrefix("admin/jobs")]
JobsController
应该在/api/jobs
JobsStatusController
应该在/api/jobs/status
提供并且有[RoutePrefix("jobs/status")]
但如果我尝试访问/api/admin/jobs
,我会输入JobsController
JobsAdminController
。是否可以使用正确的RoutePrefix来修复,或者我必须使用HttpConfiguration
更改路径?
答案 0 :(得分:0)
您可以将此类路由定义放在默认路由之前:
config.Routes.MapHttpRoute(
name: "JobsAdminRoute",
routeTemplate: "api/admin/jobs/{id}",
defaults: new { controller = "JobsAdmin", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "JobsRoute",
routeTemplate: "api/jobs/{id}",
defaults: new { controller = "Jobs", id = RouteParameter.Optional }
);
这样:
JobsAdminController
将处理api/admin/jobs
次请求JobsController
将处理api/jobs
次请求记住:
api/admin/jobs
将匹配管理控制器,其中作业将作为无法找到的id参数。