MVC路由重定向

时间:2013-11-04 18:40:35

标签: asp.net-mvc asp.net-mvc-routing

我有一个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,但似乎没有用。也许我将重定向设置为错误。

1 个答案:

答案 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" }
   );