日期:2014-05-16  浏览次数:20699 次

IE6下Ajax请求后台页面获取的SessionId和前台不一样
做一个退出登录的超链接

当点击时,向后台发出ajax请求,在后台清除登录时的SESSION
context.Session.Remove("username");

然后再用跳转语句刷新页面(逐个去隐藏和修改页面上的信息太麻烦了)
window.location.href = "index.aspx";

在页面初始化时判断如果Session里的username值为null的话就显示“登录系统”
如果有值就显示“退出系统”

测试在IE9和Firefox下都没问题
但是IE6,IE7下Session中一直有值。菜单上一直显示“退出系统”。
设置断点看了下context.Session.Remove("username");确实执行了
但还是清除不掉登录信息。。。在PageLoad里判断Session的时候,还是有值

后来发现在IE6下,登录时的SessionID和我在后台清空的SessionId不是一个。。所以尽管后台清空了Session,登录时的会话还在。。

而在IE9或火狐下都是一个SessionId。。

为什么会出现这种情况啊?


------解决方案--------------------
没碰到过这种情况。。

在remove session前输出sessionid提供给ajax,ajax请求完毕后输出返回的内容和document.cookie,看cookie中的ASPSESSIONIDCSBQCQQB=内容这个是否一致