17
4月
2018
在决定网站才用邮件的形式回复消息后就需要用户补填邮箱信息了,我用的cookie存的用户资料,想要在用户补填邮箱后更新cookie。
刚开始是这样设置的:
HttpRequest req = HttpContext.Current.Request;
HttpCookie cookies = req.Cookies["UserInfo"];
if (cookies != null)
{
cookies.Values.Set("Email", email);
}
修改是成功了,但是浏览器获取的还是以前的值,于是换了另一种方式(网上查到博客说的) 如下:
HttpRequest req = HttpContext.Current.Request;
HttpCookie cookies = req.Cookies["UserInfo"];
if (cookies != null)
{
cookies.Values.Set("Email", email);
cookies.Expires = DateTime.Now.AddMinutes(-1);
}
调试依然失败了,最后求助同事一番测试后终于成功,下面是最终解决方案:
HttpRequest req = HttpContext.Current.Request;
HttpCookie cookies = req.Cookies["UserInfo"];
if (cookies != null)
{
cookies.Values.Set("Email", email);
//req.Cookies["LoginUser"].Values["Email"] = email;
cookies.Expires = DateTime.Now.Add(new TimeSpan(168, 0, 0));
HttpContext.Current.Response.AppendCookie(cookies);
}
总结:
1.修改cookie时如果不设置过期时间,浏览器会直接清除掉cookie。
2.设置过期时间为天可能会造成无效的bug,现在是精确到小时测试成功。(具体原因目前还不是很清楚)
Heaven
00:00 / 03:31
- 1 Heaven
延伸阅读
- Herman
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
没有更多了
2020/7/30 9:12:25回复