优快云的用户反馈回来一个很诡异的bug,当用户系统的时间不正确的时候,比正确时间快或者慢时,用户就登录不上去,很诡异。解决这个问题花了我不少时间。导致这个问题的原因如下:
使用 HttpContext.Current.Response.Cookies.Set( 更新一个Cookie后, 会导致 HttpContext.Current.Request.Cookies 中的Cookie的更新全部失效。下面是一个演示这个问题的代码:
HttpCookie hc1 = new HttpCookie("aaa", "34556"); HttpCookie hc2 = new HttpCookie("bbb", "8888"); HttpContext.Current.Request.Cookies.Set(hc1); Response.Write(HttpContext.Current.Request.Cookies["aaa"].Value); Response.Write("\r\n
\r\n"); HttpContext.Current.Response.Cookies.Set(hc2); if (HttpContext.Current.Request.Cookies["aaa"] != null) Response.Write(HttpContext.Current.Request.Cookies["aaa"].Value); else Response.Write("null");
这个程序执行后,会显示:
34556
null
解决方法很简单:
所有的 HttpContext.Current.Request.Cookies.Set( 代码都放在 HttpContext.Current.Response.Cookies.Set( 代码之后。
至于为何客户端时间和服务器时间一致时,就没问题,客户端和服务器时间不同步就有问题,那就很怪异了,我一直也没想明白。
本文介绍了一个优快云用户反馈的诡异Bug,即当客户端时间与服务器时间不同步时,用户无法登录的问题。通过分析发现,这是由于更新HttpContext.Current.Response.Cookies后,HttpContext.Current.Request.Cookies中的Cookie更新失效导致的。文章给出了简单的解决办法,并探讨了该问题出现的原因。
1158

被折叠的 条评论
为什么被折叠?



