Предположим, что мы хотим преобразовать старую версию веб-форм asp.net в mvc-архитектуру. Но некоторые пользователи отметили наши URL-адреса или у них есть ссылка на другие сайты. Теперь мы не хотим потерять этот urls.instead, мы хотим создать настраиваемый маршрут, который управляет старыми типизированными URL-адресами. Этот класс получает старый URL-адрес от пользователя и создает новый маршрут и перенаправляет пользователя на новую страницу. Это мой пользовательский класс по маршруту:Конфигурация настраиваемого маршрута mvc
public class LegacyRoute:RouteBase
{
private string[] urls;
public LegacyRoute(params string[] targetUrls)
{
urls = targetUrls;
}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
RouteData result = null;
string requestedURL =
httpContext.Request.AppRelativeCurrentExecutionFilePath;
if (urls.Contains(requestedURL,StringComparer.OrdinalIgnoreCase))
{
result = new RouteData(this, new MvcRouteHandler());
result.Values.Add("controller", "Legacy");
result.Values.Add("action", "GetLegacyUrl");
result.Values.Add("legacyUrl", requestedURL);
}
return result;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
и это моя RegisterRoutes функция:
public static void RegisterRoutes(RouteCollection routes)
{
// routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new LegacyRoute("~/articles/windows_3.1_Overview.html", "~/old/.NET_1.0_Class_Library"));
routes.MapRoute(null, "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
Я также создал «Наследие» контроллер и действие «GetLegacyUrl». Но когда я запускаю сайт и введите
"localhost:14786/articles/windows_3.1_Overview.html"
в моем браузере я получаю 404 Not Found ошибка. Где проблема? Почему я получаю эту ошибку?
большое спасибо за вашу помощь. –
, пожалуйста, дайте мне знать, если он действительно решит вашу проблему, и если да, то отметьте мой ответ как правильный :) –
, к сожалению, этого не произошло. –