我有一个webservice项目正在扩展为托管多个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,但似乎没有用。也许我将重定向设置为错误。
答案 0 :(得分:0)
好的,在获得一个三明治之后想出来...只需要添加路由约束,以便旧版本不会捕获新的路由格式:
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" }
);