问一个session混乱的奇怪问题

华生豆 2008-12-29 04:44:56
不同的客户端机器使用不同用户访问服务器,访问时间不确定是否一致,但是出现了session中内容混乱覆盖的问题,具体情况如下:
用户1登陆系统查看信息A的基本信息时,程序把信息A的数据保存在session中
session["Prj"] = curPrj;

用户2登陆系统查看信息B的基本信息,程序把信息A的数据保存在session中
session["Prj"] = curPrj;

当用户2保存信息B时,程序是从session中读取数据后,根据页面中文本框中内容进行保存,其中prjid是不同的
curPrj = session["Prj"];
curPrj.name = txt1.Text;
curPrj.save();

一般情况下是没有问题的,但是有时会出现错误,session混论,用户2保存信息B时,把信息A的基本信息覆盖了,变成信息A和信息B还是两条信息,但是所有内容都一样了,prjid是不一致的,这是什么原因导致的呢?

出现的概率很低,大概一年里面几百条信息才会出现一次~~
...全文
240 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
p412726700 2012-10-26
  • 打赏
  • 举报
回复
啊············ 痛苦死了
maiguang33 2009-01-09
  • 打赏
  • 举报
回复
这个问题只能说明楼主很晕,其他无语
lambober 2009-01-08
  • 打赏
  • 举报
回复
电脑有问题吧。原来我在同事的电脑商也遇到过这个问题,用Session存储数据,两个用户会发生混乱的
华生豆 2009-01-06
  • 打赏
  • 举报
回复
补充:同时在线人不多,不过服务器一般不重启,一直运行,会不会访问次数过多造成sessionid重复呢?
华生豆 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 anncesky 的回复:]
引用 11 楼 kidman521 的回复:
我是觉得执行顺序如果有问题的话,肯定会每次保存都出现问题,而不会偶尔出现啊~~

sessionID不是说是不重复的吗?


不,有可能重复,,不过如果不是同时在线达到10w级别的话,不一般不出现sessionid一样的问题

如果你的在线用户很高的话,建议不要使用session自己设计类似session机制的存储,但存在客户端的
类似sessionid的东东绝对不相同
[/Quote]

10w级别肯定到不了,同时在线没有这么多人,现在还没找到问题原因,难道真是sessionid重复引起的?
华生豆 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 anncesky 的回复:]
引用 11 楼 kidman521 的回复:
我是觉得执行顺序如果有问题的话,肯定会每次保存都出现问题,而不会偶尔出现啊~~

sessionID不是说是不重复的吗?


不,有可能重复,,不过如果不是同时在线达到10w级别的话,不一般不出现sessionid一样的问题

如果你的在线用户很高的话,建议不要使用session自己设计类似session机制的存储,但存在客户端的
类似sessionid的东东绝对不相同
[/Quote]

10w级别肯定到不了,同时在线没有这么多人,现在还没找到问题原因,难道真是sessionid重复引起的?
steden 2009-01-01
  • 打赏
  • 举报
回复
一般都不会去用session的。
anncesky 2009-01-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kidman521 的回复:]
我是觉得执行顺序如果有问题的话,肯定会每次保存都出现问题,而不会偶尔出现啊~~

sessionID不是说是不重复的吗?
[/Quote]

不,有可能重复,,不过如果不是同时在线达到10w级别的话,不一般不出现sessionid一样的问题

如果你的在线用户很高的话,建议不要使用session自己设计类似session机制的存储,但存在客户端的
类似sessionid的东东绝对不相同
华生豆 2008-12-30
  • 打赏
  • 举报
回复
我是觉得执行顺序如果有问题的话,肯定会每次保存都出现问题,而不会偶尔出现啊~~

sessionID不是说是不重复的吗?
cl9876 2008-12-30
  • 打赏
  • 举报
回复
没什么问题啊,使用同一个SessionID当然会被覆盖。session使用有时是不稳定的,不行可以用cookie试试
qap22 2008-12-30
  • 打赏
  • 举报
回复
不懂,up
noenoughmemory 2008-12-30
  • 打赏
  • 举报
回复
不懂,up
sxmonsy 2008-12-30
  • 打赏
  • 举报
回复
这种事情从来没遇到过.楼主说:大概一年里面几百条信息才会出现一次.
首先得说信息量不大还总是出现问题,这种情况很有可能是你的代码哪里有问题比如说执行顺序等等;
kingcsx666 2008-12-30
  • 打赏
  • 举报
回复
貌似没道理
华生豆 2008-12-30
  • 打赏
  • 举报
回复
我当然知道sessionID是唯一的了,否则代码这样写不是全都乱了~~~

to flyjimi : curPrj 变量是方法的局部变量
freemeditator 2008-12-29
  • 打赏
  • 举报
回复
嗯,3楼说的有道理
flyjimi 2008-12-29
  • 打赏
  • 举报
回复
大概一年里面几百条信息才会出现一次~~
如果说session混乱,这个几率也太高了。

应该是你代码有问题,楼主是怎么执行数据修改的?

下面代码中的curPrj 变量是方法的局部变量,还是类的成员变量?
curPrj = session["Prj"];
curPrj.name = txt1.Text;
curPrj.save();
koukoujiayi 2008-12-29
  • 打赏
  • 举报
回复
楼主的理解好象有点偏差:
每个用户访问某一web站点,都会产生一个唯一的SessionID;
可以自己查看:
Response.Write(Session.SessionID);
这是服务端产生,存在于客户端的浏栏器中,
可以将Session变量看作是在SessionID下的变量,尽管各个客户端的Session变量名相同,
但他们隶属于不同的SessionId,所以绝不会发生楼主所述情况!!



华生豆 2008-12-29
  • 打赏
  • 举报
回复
补充一下,服务器操作系统win2000 server,.net framework是1.1~~

17,747

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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