При попытке сгенерировать URL из вашего RouteValueDictionary
, ASP.NET Core кодирует /
как %2F
просто потому, что он является частью сегмента URL и имеет особое значение (это сегментразделитель).
Account/Login
является недопустимым в качестве имени контроллера в этом контексте просто потому, что /
недопустим как часть идентификатора C # (т. е. Accounts/LoginController
недопустим какимя класса).
Поскольку вы пытаетесь перенаправить на Account/Login
в области Identity
, на данный момент я предполагаю, что вы используете стандартный интерфейс ASP.NET Core Identity ичто вы намерены направить на /Account/Login
Razor Page в области по умолчанию Identity
.Для этого есть как минимум пара вариантов:
Установите значение маршрута page
вместо значения маршрута controller
:
context.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { area = "Identity", page = "/Account/Login" }));
Используйте RedirectToPageResult
вместо RedirectToRouteResult
:
context.Result = new RedirectToPageResult("/Account/Login", new { area = "Identity" });
Я рекомендую использовать здесь опцию RedirectToPageResult
, поскольку она имеет более четкие намерениячто это направлено на страницу Razor, а не на контроллер MVC.