Ну, как я иногда делаю, я отвечаю на свой вопрос, чтобы добавить больше информации о том, как я решил проблему после того, как другие люди ответили (в данном случае, Дарин Димитров).
Вкратце, @Darin Dimitrovобъяснил мне, что мне нужно предоставить returnUrl
, если перенаправление на метод действия LogOn
не является результатом принуждения пользователя к предоставлению учетных данных (когда метод пытается получить доступ, имеет атрибут [Authorize]
).Мне нужно использовать new { returnUrl = RouteData.Values["action"] }
для предоставления этого значения.
Вот некоторые проблемы:
Intellisense не распознал `` RouteData.Values ["action"],Мне нужно было использовать Page.RouteData.Values["action"]
Я продолжал получать следующую ошибку: «ресурс не найден», URL показывает http://example.com/Account/Whatever_action_is_in_the_returnUrl
.Это имеет смысл, потому что я поставил только строку действия.
Я сделал это
new
{
returnUrl = Page.RouteData.Values["controller"] + "/" + Page.RouteData.Values["action"]
}
Но я получил ошибку: "ресурс не найден", отображение URL http://example.com/Account/myController/myAction
.Учетная запись все еще находилась в URL-адресе, вызывая ту же ошибку.
Наконец, в начале я добавил еще одну косую черту, и она заработала.
new
{
returnUrl = "/" + Page.RouteData.Values["controller"] + "/" + Page.RouteData.Values["action"]
}
Похоже, важно знать многие лица бизнеса перенаправлений.До сих пор я в основном использовал RedirectToAction()
.
Спасибо @Darin Dimitrov.