Recently, we've been converting over a lot of our ASP.NET Web Form pages to use ASP.NET MVC. While this is no small feat by itself, the underlying problem of having a new Url structure in the site while still supporting legacy Url's was necessary. The idea, is that you hit a page that no longer exists, and you get redirected to the appropriate controller & action within MVC.
- A legacy Url is requested from your site. For example, http://www.server.com/Users/Login.aspx
- ASP.NET routing intercepts the request and matches a route from your route collection
- Instead of using the MvcRouteHandler, a LegacyRouteHandler is invoked.
- Using the LegacyRouteHandler, it'll use the route redirection name you specified, generate the MVC Url, and issue a HTTP 301 with the location of http://www.server.com/site/login.