.net core Перенаправление на результаты маршрута добавляет% 2f к URL - PullRequest
0 голосов
/ 12 октября 2018

Это мой элемент маршрутизации:

context.Result = new RedirectToRouteResult(new RouteValueDictionary(new {area="Identity", controller = "Account / Login", action = "Index" }));

Когда приложение запускается, это то, что я получаю в URL:

http://localhost:62527/Identity/Account%2FLogin

Как я могу удалить% 2f из моего URL?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

При попытке сгенерировать URL из вашего RouteValueDictionary, ASP.NET Core кодирует / как %2F просто потому, что он является частью сегмента URL и имеет особое значение (это сегментразделитель).

Account/Login является недопустимым в качестве имени контроллера в этом контексте просто потому, что / недопустим как часть идентификатора C # (т. е. Accounts/LoginController недопустим какимя класса).

Поскольку вы пытаетесь перенаправить на Account/Login в области Identity, на данный момент я предполагаю, что вы используете стандартный интерфейс ASP.NET Core Identity ичто вы намерены направить на /Account/Login Razor Page в области по умолчанию Identity.Для этого есть как минимум пара вариантов:

  1. Установите значение маршрута page вместо значения маршрута controller:

    context.Result = new RedirectToRouteResult(
        new RouteValueDictionary(new { area = "Identity", page = "/Account/Login" }));
    
  2. Используйте RedirectToPageResult вместо RedirectToRouteResult:

    context.Result = new RedirectToPageResult("/Account/Login", new { area = "Identity" });
    

Я рекомендую использовать здесь опцию RedirectToPageResult, поскольку она имеет более четкие намерениячто это направлено на страницу Razor, а не на контроллер MVC.

0 голосов
/ 12 октября 2018

Используйте UrlDecode (вашу строку URL) HttpServerUtility перед перенаправлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...