企业做网站能赚钱么,wordpress to ghost,wordpress多站点教程,微信安装最近老是发现在IE里会有Cookie的问题#xff0c;如IE下面无法登出#xff0c;或无法登录#xff0c;或者登录后信息却无法取到#xff0c;而Firefox下面一直是通过的#xff0c;都试过好多次了#xff0c;今天终于找回的主要的原因#xff1b;Cookie的问题#xff1a;首…最近老是发现在IE里会有Cookie的问题如IE下面无法登出或无法登录或者登录后信息却无法取到而Firefox下面一直是通过的都试过好多次了今天终于找回的主要的原因 Cookie的问题 首先看一下我的Cookie存取代码 (这个Cookie操作支持二级域名访问)#region 存取Cookie /// summary /// 存Cookie /// Json Lee 2007-09-24 /// /summary /// param namestrName名称/param /// param namestrValue值/param /// param nameexpDate到期时间/param /// returns/returns public void SetCookie(string cookieName, string cookieValue, int cookieExpiryMinute) { cookieName cookieName.ToLower(); HttpCookie cookie new HttpCookie(cookieName,cookieValue); cookie.Expires DateTime.Now.AddMinutes(cookieExpiryMinute); //设置Cookie过期时间 cookie.Path /; //设置可访问Cookie的路径 为项目下的cookie文件夹及其子文件夹下所有页面 //如果需要整个应用程序可访问 则设置为cookie.Path /;即可 cookie.Domain .163.com; //以www.163.com为例若要在 news.163.com等不同主机访问可以如上设置 //删除旧的同名Cookie HttpContext.Current.Response.Cookies.Remove(cookieName); HttpContext.Current.Response.Cookies.Add(cookie); } /// summary /// 存Cookie /// Json Lee 2007-09-24 /// /summary /// param namestrName名称/param /// param namestrValue值/param /// returns/returns public void SetCookie(string cookieName, string cookieValue) { SetCookie(cookieName, cookieValue, 60); } /// summary /// 清除Cookie /// /summary /// param namestrName名称/param /// returns/returns public void ClearCookie(string cookieName) { SetCookie(cookieName,,-5); } /// summary /// 取Cookie /// Json Lee 2007-09-24 /// /summary /// param namestrName名称/param /// param namestrDefaultValue当没有值的时候的默认值/param /// returns/returns public string GetCookie(string cookieName, string defaultValue) { cookieName cookieName.ToLower(); string strResult defaultValue; try { if (HttpContext.Current.Request.Cookies ! null) { if (HttpContext.Current.Request.Cookies[cookieName] ! null) { strResult HttpContext.Current.Request.Cookies[cookieName].Value; } } } catch (Exception ex) { this.WriteWrongLog(ex); } return strResult; } /// summary /// 取Cookie /// Json Lee 2007-09-24 /// /summary /// param namestrName名称/param /// returns/returns public string GetCookie(string strName) { return GetCookie(strName, ); } #endregion Cookie存取看起来的确很简单而在.NET里面好像更简单。 但是...................... 往往简单的东西经常出现一些问题让人找不到原因。 我之前这里出现的问题就是在写Cookie的时候没有处理旧的同名Cookie例如第一次登录的时候写入 Cookie usernamejsonlee 和 password123456 有时候有可能会在未退出的情况下重新登录一下这样就会再次写入同样的Cookie但这样的情况好像没有把原来的覆盖(我用 IECookies 这个工具看到的)而是新加入一个同名的。这样一来明显问题就存在了。 所以我在SetCookie的方法里面加入了 //删除旧的同名Cookie HttpContext.Current.Response.Cookies.Remove(cookieName); 这样一来问题就解决了。IE页面缓存的问题我现在的用户登录状态是通过 Ajax调用一个 GetUserBar.aspx 来取得用户状态栏信息的 以下是 GetUserbar.aspx 的代码% Page languagec# CodebehindGetUserBar.aspx.cs AutoEventWireupfalse InheritsWeb.GetUserBar %%if(CheckIsLogin()){% 您好%this.GetNickname()%a href%UrlRewriteLink.GetUserHomeUrl()%您的主页/a | a href/user/user_setup.aspx个人设置/a | a href/logout.aspx退出/a%}else{%span stylemargin-right:10px;您已经登录了/spana href/reg.aspx注册/a | a href/login.aspx登录/a%}% 如上面这段代码如果通过Ajax调用它哪就可以在静态页面上取得用户的登录信息 可是....... 这个问题就出来了而且还不容易发现哪就是IE的页面缓存IE好像有个机制会把访问过的页面缓存到 C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files 这个文件夹里面。所以每个Ajax调用的GetUserBar.aspx时候IE取到的都是缓存信息而不是GetUserBar.aspx运行的结果。所以才出现了一直无法登出或无法登录的状态其实是已经登录登出了的只是表面上看不出来。 解决办法就是在 GetUserBar.aspx 的Page_Load方法里面加入设定Response.Expires的时间的处理如 private void Page_Load(object sender, System.EventArgs e) { this.Response.Expires 0; } 这样问题就解决了。 网上存在很多的Cookie操作的文章可是这些东西都是抄来抄去的哪个站长跟本就没有对这些代码做过测试我以前试着看过好多个很多是存在有问题的。 希望这篇文章会给需要的人带来帮助。 转载:http://www.cnblogs.com/huacn/archive/2007/11/14/958891.html#959695转载于:https://www.cnblogs.com/yongqiudeng/archive/2007/11/15/960215.html