我有一个仅用于向我们的应用程序发送 API 请求的项目,我们使用的是 ASP.NET MVC 4 项目。我们有一些从 ApiController 派生的 Controller 和从普通 Controller 类派生的其他 Controller 。问题是我不想为 api/XXXXX/
的 ApiControllers 设置默认路由。 .我希望 ApiController 与非 Api Controller 使用相同的路由,即 {controller}/{action}/{id}
.我尝试添加以下路线
routes.MapHttpRoute(
name: "Api",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这将使我的 ApiControllers 可以使用正常的
{controller}/{action}
访问。路由但“正常” Controller 不再可访问。如果我去掉 MapHttpRoute
相反的情况发生。有什么办法可以通过相同的 url 路由访问 ApiControllers 和“普通” Controller ?
最佳答案
根据我所见,唯一可以做到这一点的方法是明确命名每个 API Controller 。下面我有一个 Some ApiController 类。
routes.MapHttpRoute(
name: "SomeApiController",
routeTemplate: "SomeApi/{action}/{id}",
defaults: new { controller = "SomeApi", id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
关于asp.net-mvc - ASP.NET MVC 4 ApiController 和普通 Controller 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18420878/