SESSION丢失的问题??? 我在同一台机中,使用两个不同用户(test1,test2)登录系统,并且都使用了Session["uid"]来保存变量,但现在的问题是:当我其中的一个用户注销(清除Session)掉后,那个在线用户页面就出错了(也就是把此用户的Session也清掉了),如何避免这种情况呢???大家碰到这种情况通常是如何清除Session的??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般都是用url传值,至于session丢失的问题就多了~ Session.Remove("名称");//楼主最好移除指定的session 我注销的代码就这么一句:Session.Clear(); 我用session 总是不稳定,也没查到原因,就改成用 cookie 了 在前台页面中加下面的脚本看看啊 <script> Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function EndRequestHandler(sender, args) { if (args.get_error() != undefined) { if(args.get_error().message.substring(0, 51) == "Sys.WebForms.PageRequestManagerParserErrorException") { //window.location.reload(); //出现Session丢失时的错误处理,可以自己定义。 document.getElementById("btnLogin").click(); } else { alert("发生错误!原因可能是数据不完整,或网络延迟。"); //其他错误的处理。 } args.set_errorHandled(true); } } </script> 四楼是这个意思吧:Session.Remove("uid"); 我登录成功后是这样写的:Session["uid"]=tbxUser.Text; Session.Remove("id"); FormsAuthentication.SignOut();就这样写同一台机器同一个浏览器是不可能同时有两个帐号同时登录的, 你seeion保存的什么就是是什么 Session.Remove("id"); FormsAuthentication.SignOut(); 同一台机器同一个浏览器同时登录两个帐号,session只会保存最后一次登录的值.你的注销代码换成我发的.clear()方法少用,好比有个用户登录,并且有一个购物车也是session保存,你用clear()那就把所有的session值都清空了. 据说session会丢值的,最好少用 我试过了,使用Session.Remove("uid")一样会把所有的Session清空!!! 这问题用session没法解决。关于session失效问题,如果是放在服务器上,你没有配置session的存储方式,是很容易出现的,默认存储在iis内存上,换种存储模式就行了。 似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开,Session的时间设置是不是有问题,会不会因为超时造成丢失 你保存的时候就各自用各自的session,取不用的名称。清空的时候指定名称清空应该就不会丢失了我实现注销功能的时候直接Session["uid"]=""; 对啊你test1登陆之后,再登陆test2,此时应该是test2了,刷新一下页面,应该出来的是test2的,就算不刷新你直接点退出,清除应该也是test2的 就算你创建100个页面也是同一个Session吗!这可算很基本的知识。 所谓“不同页面使用同一个Session”,原因就是因为它们的cookie也是完全相同的东西、共同使用的东西。所以这样照问题是浪费时间的。 同一台机器同一个浏览器,用第一个帐号登陆时,Session["uid"]=tbxUser.Text;//tbxUser.Text的值为"ABC"再用第二个帐号登陆,Session["uid"]=tbxUser.Text;//tbxUser.Text的值为"XYZ"这个时候,Session["uid"]被再次赋值,原来的"ABC"从机器内存里面消失了,不存在了!!!!好好理解9楼的意思!!认真思考下,Session是个什么东西!! 你用的是同一个浏览器吗 如果是的 那么session不是丢失了是覆盖了 此问题应该是有解的,比如126邮箱,在IE中用[email protected]进去,再用[email protected]进去,再退出[email protected],[email protected]依然能正常使用啊!所以我相信此问题应该可以解决的,只是我们都限于水平,所以,不过还是非常感谢大家! 搞笑了吧。Session哪里这么容易丢失,把微软当成白痴了?你 注销什么呀?(这不是cs程序!)直接关了了IE不就行了。 bs的不用注销。还是关ie吧,把你的程序设置成主页就行了,一打开就行了。 可以试试这样,为每个用户随机产生一个整数i,然后把他的id保存在Session[" + i.ToString() + "id"]里,再把i保存在ViewState里,使用的时候,先从ViewState读出i,然后再清相应的Session.以前用webBrowser打开多个页面,需要不同的Session,就是这样解决的。 保存Excel数据到DataSet可以直接更新到数据库吗? 下拉框绑定问题,,,在线急。。。 cognos 报表材料? 写SQL语句时最用参数传递 [100分请教]asp.net的运行权限问题? 必须加上Users用户吗?不加行不行呀?(up有分) 网页老说“无法验证数据”,怎么解决? DataGrid 的取值问题! 急的都要哭了! 如何在运行时设置datagrid中HyperLinkColumn的文本和链接? 奉100分以谢高手 关于DropDownList的一个小问题,高手来指点一下啊 页面提示插件安装 查询语句,在线等,各位帮帮忙
Session.Remove("名称");//楼主最好移除指定的session
<script>
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined)
{
if(args.get_error().message.substring(0, 51) == "Sys.WebForms.PageRequestManagerParserErrorException")
{
//window.location.reload(); //出现Session丢失时的错误处理,可以自己定义。
document.getElementById("btnLogin").click();
}
else
{
alert("发生错误!原因可能是数据不完整,或网络延迟。"); //其他错误的处理。
}
args.set_errorHandled(true);
}
}
</script>
我登录成功后是这样写的:Session["uid"]=tbxUser.Text;
Session.Remove("id");
FormsAuthentication.SignOut();
就这样写
同一台机器同一个浏览器是不可能同时有两个帐号同时登录的,
Session.Remove("id");
FormsAuthentication.SignOut();
我实现注销功能的时候直接Session["uid"]="";
对啊你test1登陆之后,再登陆test2,此时应该是test2了,刷新一下页面,应该出来的是test2的,就算不刷新你直接点退出,清除应该也是test2的
就算你创建100个页面也是同一个Session吗!这可算很基本的知识。
用第一个帐号登陆时,
Session["uid"]=tbxUser.Text;//tbxUser.Text的值为"ABC"
再用第二个帐号登陆,
Session["uid"]=tbxUser.Text;//tbxUser.Text的值为"XYZ"
这个时候,Session["uid"]被再次赋值,
原来的"ABC"从机器内存里面消失了,不存在了!!!!好好理解9楼的意思!!
认真思考下,Session是个什么东西!!
是覆盖了
Session哪里这么容易丢失,
把微软当成白痴了?你 注销什么呀?(这不是cs程序!)
直接关了了IE不就行了。
一打开就行了。
以前用webBrowser打开多个页面,需要不同的Session,就是这样解决的。