如果有一个带有特定cookie的请求,我想要删除该cookie,并重定向回同一操作(并保留查询字符串、路由值等)。我期望在第二个(重定向的)请求中,该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);
}
}
在第一次请求时,一旦我删除了cookie,它就从请求中消失了。但是在第二个重定向的请求中,它仍然存在!因此,上面的代码进入了一个无限循环。
我该如何删除它?