项目重新编译后Cookie取值问题

wenhengtan 2009-06-09 02:33:21
我有个项目,登录时候用 Cookie 保持登录信息!如下代码

                    HttpContext.Current.Session["UNAME"] = name;
HttpCookie Cookie_Login = new HttpCookie("Cookie_Login");
Cookie_Login.Value = name + "$" + pw;
Cookie_Login.Expires = DateTime.Now.AddMinutes(int.Parse(System.Configuration.ConfigurationManager.AppSettings["cookieTime"].ToString()));
HttpContext.Current.Response.Cookies.Add(Cookie_Login);


然后有个方法检测用户登录状态

    public bool CheckLogin(bool isRedirect)
{
bool isLogin = HttpContext.Current.Session["UNAME"] != null ? true : false;
if (!isLogin)
{
Response.Write("Session 为空,开始读取 Cookie </br>");
if (HttpContext.Current.Request.Cookies["Cookie_Login"] != null)
{
Response.Write("Cookie 不为为空,开始处理 Cookie </br>");
string[] Cookie_Login = HttpContext.Current.Request.Cookies["Cookie_Login"].Value.ToString().Split('$');
if (Cookie_Login.Length > 1)
{
Response.Write("Cookie 长度大于0 开始自动登录 </br>");
}
else
{
Response.Write("Cookie 长度为0</br>");
}
}
}
if (!isLogin)
{
if (isRedirect)
{
HttpContext.Current.Response.Redirect("/index.aspx");
}
}
return isLogin;
}


在正常登录保存了Cookie后,我重新编译项目,然后刷新一个在 PageLoad 里面调用了 CheckLogin 的页面
这个时候页面输出结果是

Session 为空,开始读取 Cookie
Cookie 不为为空,开始处理 Cookie
Cookie 长度为0


然后我重新刷新页面(并不重新编译项目),这个时候页面输出结果变成了

Session 为空,开始读取 Cookie
Cookie 不为为空,开始处理 Cookie
Cookie 长度大于0 开始自动登录

这个时候我再重新编译项目,然后刷新页面,结果又是

Session 为空,开始读取 Cookie
Cookie 不为为空,开始处理 Cookie
Cookie 长度为0

再刷新页面

Session 为空,开始读取 Cookie
Cookie 不为为空,开始处理 Cookie
Cookie 长度大于0 开始自动登录



为什么在我重新编译项目后,第一次刷新页面读取到的 Cookie 不为 null 但却为 "" 呢, 但再次刷新页面后读取到的Cookie却不为 "" 了呢?
谁能解答我的问题?
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-06-09
  • 打赏
  • 举报
回复
是否添加了IsPostback,Cookies["Cookie_Login"] 不为null主要是值问题
if(!IsPostback)
{
CheckLogin(isRedirect)
}
调试跟踪看看数据就知道了
amandag 2009-06-09
  • 打赏
  • 举报
回复
Cookie_Login.Value = name + "$" + pw;
==
可以考虑使用多键值的Cookie写法

HttpCookie Cookie_Login = new HttpCookie("Cookie_Login");
Cookie_Login.Values["name"] = name;
Cookie_Login.Values["pwd"] = pw;
Cookie_Login.Expires = DateTime.Now.AddMinutes(int.Parse(System.Configuration.ConfigurationManager.AppSettings["cookieTime"].ToString()));
Response.Cookies.Add(Cookie_Login);
amandag 2009-06-09
  • 打赏
  • 举报
回复
正常登录保存了Cookie后,我重新编译项目,然后刷新一个在 PageLoad 里面调用了 CheckLogin 的页面
==
这个也有问题,一般是在Global.asax的Session_Start事件中处理
amandag 2009-06-09
  • 打赏
  • 举报
回复
在正常登录保存了Cookie后,我重新编译项目,然后刷新一个在 PageLoad 里面调用了 CheckLogin 的页面
这个时候页面输出结果是

Session 为空,开始读取 Cookie
Cookie 不为为空,开始处理 Cookie
Cookie 长度为0
==
这个时候输出的cookie就是空字符串么?
zhulong1111 2009-06-09
  • 打赏
  • 举报
回复
顶下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧