如何在 Web 中按路由拆分控制器 Api 2

How to split controllers by route in Web Api 2

我有一堆控制器,想通过路由将它们分成两组:

            config.Routes.MapHttpRoute(
                "r1",
                "api/v1.0/route1/{controller}/{action}/{id}",
                new {id = RouteParameter.Optional}
            );

            config.Routes.MapHttpRoute(
               "r2",
               "api/v1.0/route2/{controller}/{action}/{id}",
               new { id = RouteParameter.Optional }
           );

我想我可以用类似的东西来做到这一点:

[RoutePrefix("api/v1.0/route1")]
    public class MyController : ApiController

让它只走 route1,但是我也可以通过 route2 到达它。

我也试过了

[RoutePrefix("route1")]
        public class MyController : ApiController

同样的结果。我怎样才能让 MyController 只走 route1?一如既往地感谢您的帮助。

你想要

[RoutePrefix("api/v1.0)]
public class MyController : ApiController

然后是方法本身

[Route("route1")]
public async Task<HttpResponseMessage> RouteOne(object params)
{
 ...
}


[Route("route2")]
public async Task<HttpResponseMessage> RouteTwo(object params)
{
 ...
}

同意评论者所说的不要管 MapHttpRoute。应如下所示:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);