2016-03-31 18 views
1

Ich muss alte URL (von einer klassischen Asp-Website) zu den neuen umleiten, die mit ASP .NET MVC generiert werden. Beispiel:ASP .NET MVC 5 Legacy-URL

Von localhost/news.asp-localhost/News

I Summa die folgende Regel:

routes.MapRoute(
      "legacyUrl1", 
      "{controller}.asp/{action}/{id}", 
      new { controller = "News", action = "RedirectLegacyURL", id = UrlParameter.Optional } 
     ); 

//in news controller 
public void RedirectLegacyURL(string id) 
    { 
     Response.Status = "301 Moved Permanently"; 
     Response.AddHeader("Location", "news/"); 
     Response.End(); 
    } 

Aber die Regeln "verwendet es" ist die folgende:

routes.MapRoute(
      "Normal", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

Wie ist das möglich? Diese Sache verursacht Problem, wenn ich Legacy-URLs mit Abfrage-String umleiten muss.

+1

FWIW umleiten, es besser ist, dies über IIS zu handhaben, da das, was in einigen Legacy-Anwendung los ist nicht die Domäne Ihrer Anwendung ist. Es sollte sich nur um das kümmern, was es benötigt, nicht um eine Legacy-App. Verwenden Sie das URL-Rewrite-Modul in IIS. –

Antwort

1
routes.Redirect(r => r.MapRoute("", "news.asp")).To(routes.Map("", "Home/Index", new { controller = "Home", action = "Index" })); 

Dies ist, wie ich meine alte .asp Routen

+5

Sie haben vergessen anzugeben, dass diese Erweiterungsmethode "Redirect" Teil der RouteMagic-Bibliothek ist, die Phil Haack vor langer Zeit entwickelt hat. https://github.com/haacked/routemagic Und um es zu benutzen, muss OP das folgende nugget Paket installieren: https://www.nuget.org/packages/RouteMagic.Mvc/ –

+0

Danke @AlexArt. – sjr59