Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 重定向期间删除cookie_Asp.net_Asp.net Mvc_Cookies_Httprequest_Response.redirect - Fatal编程技术网

Asp.net 重定向期间删除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

如果请求带有某个cookie集,我想删除该cookie,并重定向回同一操作,并保留querystring、route值等

我希望在第二个重定向请求中,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,它就会从请求中消失。但是在第二个重定向请求中,它仍然存在!所以上面的代码进入了一个无限循环

如何删除它?

尝试以下操作:

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对象。诀窍是更新响应。这在我的代码中丢失了。