无法登陆 无法退出问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 04:46:24
本人使用C#语言 DOT NET开发软件 B/S架构 用AJAX 做了会员登陆与退出功能,结果,出现了非常诡异的状况,点击“登陆”按钮 ,虽然局部刷新了,可是就是没有会员信息显示出来,依旧是原先的登陆框。然而当打开一个新窗口的时候,会员信息却显示出来了。退出登陆的时候也是同样,非要打开一个新窗口才会退出来。

刚开始以为是SESSION失效,我就用COOKIES来做,问题依旧,后来简化代码。问题解决了一半,当前页面登陆成功,但是只要刷新,或者在本窗口打开其他其他页面,登陆框依旧显示,非要打开新窗口,才是登陆进去。退出登陆也是同样。

后来,才发现,当更改internet 选项-》设置-》internet临时文件 选项的“自动”改成“每次访问页面时 ” 问题则解决了。

但是,大部分人的IE设置一般都是默认值,这肯定会导致最先前的问题出现。

我是想请教高手,如何用程序控制,根本上解决问题。

能解决掉我这问题的,我加他100分。
问题解决了,根本原因是 AJAX不能及时更新缓存问题,在网上找到四种解决方法,1、open("GET",url+"?t="+Math.random(),false);2、setInterval("ajaxRead('new.php')",30000); //自动更新 3、xmlhttp.setRequestHeader("Cache-Control","no-cache");4、在XmlHttpRequest发送请求之前加上 XmlHttpRequest.setRequestHeader("If-Modified-Since","0"); 这四中都无法解决,后来我尝试把open("get",url,false) 改成了open("post",url,false);
问题解决。。。

这是由于缓存滞留客户端造成的问题,有两种解决方法

1) 设置页面的无缓存
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

2) 或者直接在页面的 header 元素中添加内容
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

补充:
用这样的方式
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="Mon, 23 Jan 2008 12:52:30 GMT">

将以上 expires 的 content 修改为你想要过期的时间即可,时间的格式必须是 UTF 标准时间哦(不是+8北京时间),你修改下就可以用了。