处理重命名控制器的最佳方法

时间:2011-08-21 04:04:38

标签: asp.net-mvc-3 redirect

使用ASP.NET MVC3,网站处于测试阶段,客户决定重命名其中一个控制器。

http://domain.com/foo[/*] -> http://domain.com/bar[/*]

处理重定向的最简单方法是什么,所以我不打破任何foo书签?

3 个答案:

答案 0 :(得分:2)

保留旧控制器,以便旧URL仍可用。

或添加重写规则。类似的东西:

domain.com/foo(/[_0-9a-z-]+)

为:

domain.com/bar{R:1}

IIS中的URL重写 http://technet.microsoft.com/en-us/library/ee215194(WS.10).aspx http://www.iis.net/download/URLRewrite

如果您使用的是MVC.NET,则可能已经安装了URL Rewrite。

答案 1 :(得分:2)

另一个选择是在Global.asax.cs中为旧控制器名称注册一个特定路由。

routes.MapRoute(
    "RenamedController",                                              // Route name
    "[OldControllerName]/{action}/{id}",                           // URL with parameters
    new { controller = "[NewControllerName]", action = "Index", id = "" }  // Parameter defaults
);

在标准默认路由之前添加它,并且新控制器应响应旧名称和新名称。

答案 2 :(得分:0)

302重定向没问题,如果你能弄清楚如何在IIS中做到这一点。此屏幕截图显示它是not that arduous。或者,如果你正在使用Castle Windsor,你可能希望register an interceptor使用HttpResponse.Redirect()