5

我有一个项目仅用于 API 请求进入我们的应用程序,我们正在使用 ASP.NET MVC 4 项目。我们有一些从 ApiController 派生的控制器和其他从普通控制器类派生的控制器。问题是我不想为api/XXXXX/. 我希望 ApiController 与非 Api 控制器使用相同的路由,即{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 }
);

这将使我的 ApiController 可以使用普通{controller}/{action}路由访问,但“普通”控制器不再可访问。如果我摆脱MapHttpRoute了相反的情况。

有没有办法让 ApiControllers 和“普通”控制器通过相同的 url 路由访问?

4

1 回答 1

6

据我所知,唯一可以做到这一点的方法是明确命名每个 API 控制器。下面我有一个 SomeApiController 类。

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 }
);
于 2013-09-02T16:52:00.983 回答