У меня есть метод, украшенный двумя пользовательскими ActionFilterAttribute.ASP.NET MVC: Response.Redirect (url, TRUE) не останавливает обработку запроса
[RequiresAuthentication(Order = 1)]
[ToonAction(Order = 2)]
public ActionResult Browse(...
RequiresAuthentication
атрибут исходит из this article
Внутри RequiresAuthentication, на это OnActionExecuting я:
filterContext.HttpContext.Response.Redirect(loginUrl, true);
Линия является получить казнены, а аргументы все, как и ожидалось. Проблема в том, что после выполнения строки выше я получаю следующий атрибут (ActionFilterAttribute), как если бы перенаправление не работало, он просто продолжает выполнение запроса, а не просто перенаправляет браузер.
Вопрос: что еще мне нужно сделать, чтобы обработчик запросов
Это полный метод:
public override void OnActionExecuting(ActionExecutingContext filterContext) {
//redirect if not authenticated
var identity = filterContext.HttpContext.User.Identity;
if (!identity.IsAuthenticated) {
//use the current url for the redirect
string redirectOnSuccess = filterContext.HttpContext.Request.Url.PathAndQuery;
//send them off to the login page
string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
string loginUrl = FormsAuthentication.LoginUrl + redirectUrl;
filterContext.HttpContext.Response.Redirect(loginUrl, true);
// filterContext.Result = new HttpUnauthorizedResult();
// filterContext.HttpContext.Response.StatusCode = 0x191;
}
}
Это оказался ответ, который мне нужен - я делал перенаправление на Response, и в течение нескольких месяцев я не мог понять, почему я получаю ошибки «Can not set cookie». –