0

我有一个 web 服务项目正在扩展以托管多个 API 而不是一个,所以我想清理路由而不破坏旧版本。主 API 用于坐在名为 API 的控制器上并接受如下参数:

api/{language}/{action}/{*parameters}

现在,我有一个名为 API 的区域,它将在各自的控制器中容纳每个 API,路由将如下所示:

api/{controller}/{language}/{action}

我仍然需要旧路由可用于已经使用旧路由的旧应用程序,我希望能够创建第二条“旧”路由来捕获旧路径并使用新控制器。我试过了,但它只适用于新位置,并且 ikd 返回 404。

api/{language}/{action}/{*parameters}",
new { controller = "api1", action = "Index", language = "json" }

关于如何做到这一点的任何想法?我尝试了 RouteMagic,但它似乎没有用。也许我设置了错误的重定向。

4

1 回答 1

0

好的,在得到一个 Sandwhich 后想通了……只需要添加路线约束,这样旧版本就不会赶上新的路线格式:

    routes.MapRoute(
       "API_default",
       "api/{controller}/{language}/{action}",
       new { controller = "api1", action = "Index", language = "json" },
       new { language = "json|xml" }
   );

   routes.MapRoute(
       "API_legacy",
       "api/{language}/{action}/{*parameters}",
       new { controller = "api1", action = "Index", language = "json", parameters = UrlParameter.Optional },
       new { language = "json|xml" }
   );
于 2013-11-04T18:53:50.153 回答