cookies。 为什么不这样做?
我迷失了,现在最简单的事情对我不起作用。
好的,所以如果我只用Step1运行这个脚本 – 它将返回“NotNull” – 好!
如果我然后运行它只有步骤2它将按预期返回“空” – 好!
但是,如果我然后删除步骤1和2(用步骤2删除cookie后)它切换回“NotNull” – Baad!
怎么可能? 我怎样才能检查cookie是否为空!
希望你能帮忙:)
//Step 1 HttpContext.Response.Cookies.Add(new HttpCookie("test") { Name = "test", Expires = DateTime.Now.AddDays(2) }); //Stem 2 HttpContext.Request.Cookies["test"].Expires = DateTime.Now.AddDays(-2); HttpContext.Request.Cookies.Remove("test"); HttpContext.Request.Cookies.Clear(); string test = "Null"; if (HttpContext.Request.Cookies["test"] != null) { test = "NotNull"; } return Content(test);
在第二步中,您尝试修改Cookie,但仍在使用Request
对象。 要提交修改,您需要Response
对象。 所以,在你的第二步cookies还活着之后。
//Stem 2 HttpContext.Response.Cookies["test"].Expires = DateTime.Now.AddDays(-2); HttpContext.Response.Cookies.Remove("test"); HttpContext.Response.Cookies.Clear();
从Request
和Response
清除cookie不会从客户端删除cookie。 要真正删除cookie,您需要将cookie的过期时间设置为过去的日期,然后将其重新添加到响应中,以便它在客户端上过期:
if (Request.Cookies["test"] != null) { HttpCookie test = new HttpCookie("test"); test.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(test); }
或者,简单地说:
HttpContext.Response.Cookies.Add(new HttpCookie("test") { Name = "test", Expires = DateTime.Now.AddDays(-1d) });