Asp.net 重定向期间删除cookie
如果请求带有某个cookie集,我想删除该cookie,并重定向回同一操作,并保留querystring、route值等 我希望在第二个重定向请求中,cookie将消失。但事实并非如此 我的行动方法:Asp.net 重定向期间删除cookie,asp.net,asp.net-mvc,cookies,httprequest,response.redirect,Asp.net,Asp.net Mvc,Cookies,Httprequest,Response.redirect,如果请求带有某个cookie集,我想删除该cookie,并重定向回同一操作,并保留querystring、route值等 我希望在第二个重定向请求中,cookie将消失。但事实并非如此 我的行动方法: [DeleteCookie] public virtual ActionResult doStuff() { // blah } 我的操作过滤器: [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public
[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,它就会从请求中消失。但是在第二个重定向请求中,它仍然存在!所以上面的代码进入了一个无限循环
如何删除它?尝试以下操作:
HttpCookie cookie = Request.Cookies["foo"];
if (cookie != null)
{
cookie .Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie);
}
我要补充一些与cookies相关的非常重要的观点
我们可以随时添加临时和永久的cookies。
我们无法删除Cookie,因为它将存储在客户端计算机中,我们无权执行删除操作。
请参考下面的解决方案以供参考
如果请求,Cookies[userId]!=空的
{
Response.Cookies[userId].Expires=DateTime.Now.AddDays-1
}
请检查cookie是否存在,不要使用Remove关键字,这将不起作用。共享一个最好的方法,它将帮助您了解更多信息。您也可以使用天 这不是强制性的,你只需要加上年份 HttpCookie cookie=Request.Cookies[testcookie] 如果饼干空的 { cookie.Expires=DateTime.Now.AddDays-1 Response.Cookies.Addcookie }
我无法让cookie过期,页面重定向,至少不能通过MVC 如本答复所述: 我必须使cookie过期,然后显示一个视图,并在该视图中重定向。在我的例子中,我使用RedirectToAction重定向回同一控制器操作
@{
ViewBag.Title = "Expire";
Layout = null;
Response.Redirect( Url.Action("Index", "Home"), false);
}
您是否尝试过从响应对象而不是请求中删除cookie?AddYears-1还应该处理response对象。诀窍是更新响应。这在我的代码中丢失了。