Перенаправление классических URL-адресов ASP в маршруты MVC

#asp.net-mvc #iis #asp-classic #iis-7.5 #asp.net-mvc-routing

#asp.net-mvc #iis #asp-classic #iis-7.5 #asp.net-mvc-routing

Вопрос:

Я создал пользовательский маршрутизатор в своем проекте MVC следующим образом:

 public class Classic_ASP_Routes : RouteBase
{
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        const string status = "301 Moved Permanently";
        var request = httpContext.Request;
        var response = httpContext.Response;
        var legacyUrl = request.Url.ToString();
        var newUrl = "";

        if (legacyUrl.Contains("eventdetail.asp"))
        {
            // grab the ID from the query string
            int id = int.Parse(legacyUrl.Split('=')[1]);

            newUrl = "/event/"   id;
        }
        else if(legacyUrl.Contains("addeent.asp"))
        {
            newUrl = "/Calendar/Add-Event";
        }

        if (newUrl.Length > 0)
        {
            response.Status = status;
            response.RedirectLocation = newUrl;
            response.End();
        }

        return null;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        return null;
    }
}
  

Затем включил это в мой routes.config следующим образом:

 routes.Add("ClassicASP", new Classic_ASP_Routes());
  

И одно время это работало на сервере разработки под управлением IIS 7.5, мне приходилось возиться с сопоставлениями обработчиков IIS, но в конечном итоге это сработало, проанализировав URL-адреса legaxy asp и корректно извлекая параметры строки запроса.

Но, увы, кажется, что если я вообще коснусь настроек IIS, настройка сопоставления обработчика каким-то образом изменится. Теперь я больше не могу корректно отображать обработчик, клянусь, я запишу это, если он снова заработает.

Комментарии:

1. Вам лучше использовать модуль перезаписи URL IIS, чем пытаться сделать это в MVC

2. @John Не показано, это то, что мне нужно посмотреть один из параметров, чтобы создать новый URL, возможно ли это при перезаписи url

3. Я не совсем уверен, что вы имеете в виду. Правила перезаписи URL-адресов принимают переменные, например, если у вас есть страница с подробными сведениями http://mysite/article.asp?articleid=n , вы можете создать одно правило, которое переписывает это как http://mysite/article/n — вам не нужно отдельное правило для каждого значения ‘n’

4. Нет, я имею в виду, что новые URL-адреса оптимизированы для seo, поэтому будут включать город, штат, название

5. Передаются ли city, state и title как значения querystring на ваших устаревших страницах или они поступают откуда-то еще?