Если запрос приходит с определенным набором печенья, я хочу, чтобы удалить это печенье, и перенаправить обратно на то же действие (и сохранить строку запрос, значение маршрута и т.д.)Удалить кук при переадресации
Я ожидаю, что во втором (перенаправленном) запросе cookie исчезнет. Но это не так.
Мой метод действия:
[DeleteCookie]
public virtual ActionResult doStuff() {
// blah
}
Мои действия фильтра:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class DeleteCookieAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext context) {
var request = context.HttpContext.Request;
if (request.Cookies.AllKeys.Contains("foo")) {
request.Cookies["foo"].Expires = DateTime.Now.AddYears(-1); // I tried this
request.Cookies.Remove("foo"); // I tried this
context.Result = new RedirectToRouteResult(context.RouteData.Values);
}
base.OnActionExecuting(_filterContext);
}
}
Во время первого запроса, когда я удалить куки, он исчезает из запроса. Но во втором перенаправленном запросе он все еще там! И поэтому приведенный выше код переходит в бесконечный цикл.
Как его удалить?
Вы пробовали удалить куки из объекта ответа, а не запрос? AddYears (-1) также должен работать над объектом ответа – LDJ