关于Session互相覆盖的问题

vividboy 2005-11-19 10:53:18
由于Session是针对每一个用户的,所以,如果一个用户进行多窗口操作的时候,很可能出现Session互相覆盖的问题。

我现在做的系统的解决方法是在Session命名的时候加上一个标识的ID变量。

而ID变量本身是通过URL传值的。


我想看看大家有没有遇到这个问题, 遇到的是怎么解决的。

谢谢
...全文
1251 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
vividboy 2005-12-15
  • 打赏
  • 举报
回复
对,产生随机的sessionid基本上就是每个用户在操作过程中拥有多套相互独立的session,

这样确实耗服务器的资源。

那么页面之间值的传递,对弈并发性要求比较高的程序,各位是怎样解决的呢?

有没有关于ASP.NET各种传值方式原理介绍的?
allismine 2005-12-15
  • 打赏
  • 举报
回复
支持一下,这个问题是一个令人头痛的问题。极度关切。。。。。
nameone 2005-12-15
  • 打赏
  • 举报
回复
标识的ID变量累计+1
hhbkiller 2005-12-15
  • 打赏
  • 举报
回复
我认为楼主的办法是不可以的,用sessionid不能保证session里面的东西也一样,假如1万人同时登陆了,是不是这1万人每人都有一个sessionid呢?每个sessionid又对应了好多的东西,那得存多少阿?

-------------------------------------------------------------------------
.Net技术讨论群14272327,欢迎爱好c#和asp.net的同志加入~队伍正在不断壮大中...
okyzx 2005-12-15
  • 打赏
  • 举报
回复
学习
bingbingcha 2005-12-15
  • 打赏
  • 举报
回复
可以用多个不同的变量保存你的值..
如果是做类似验证客户,或者跟踪客户信息的话,可以用当前的网址为变量保存..比如当前是aa.aspx..则Session["aa"]="值",需要知道客户访问过的页面的时候,就循环session中的变量
yaozhg 2005-12-15
  • 打赏
  • 举报
回复
看看这样行不行。


1、产生一个随机数,加载在窗体IE上(比如测试时先放在textbox或cookies里),同时保存一个随机数到session上,(反正大同小异),这样二个值是相同的。

2、当用多一个窗口再打开。新的随机数又在textbox上出现,同时又保存到session上,返回1窗口中操作,session值已经是第2步中复盖了的随机数,所以不等于1窗口的textbox中的随机数,所以判断为失效窗口,用户做任何操作都退出登陆,并弹出警告说明开了新窗口,用户按了确定就关闭这个1步上的IE。


----------
其实想想,只要让用户无法用多个窗口操作就行了。

登陆之后,建立一个cookies,用户再用IE打开窗口,判断cookies是否存在,如果存在,新窗口就不输出任何内容。
claus2001 2005-12-15
  • 打赏
  • 举报
回复
mark
dapang731 2005-12-14
  • 打赏
  • 举报
回复
楼上的不错
christ2 2005-12-14
  • 打赏
  • 举报
回复
根本之道,不要把Session做为传递参数的方法过于频繁,能不用就不用,session很耗。
vividboy 2005-12-14
  • 打赏
  • 举报
回复
现在解决的办法。在Session名字后面加一个随机数。

产生随机数的办法是用Random类的.Next()方法。

测试了一下,在10000次循环中还没有出现重复的随机数。

基本可以满足要求了。

看看还有更好的方法没有。
vividboy 2005-11-21
  • 打赏
  • 举报
回复
up
clxxj 2005-11-19
  • 打赏
  • 举报
回复
string pageguid = system.guid.pageguid;
Session[YourName+pageguid ] = object;
  • 打赏
  • 举报
回复
测试的时候,要把一个窗口用 Ctrl+N 键复制为同一会话的两个并行窗口,然后专门测试这两个窗口中的session会不会相互影响造成窗口内的数据混乱。
vividboy 2005-11-19
  • 打赏
  • 举报
回复
原来没有注意到,最近才发现这是一个大问题。
JadyZhu 2005-11-19
  • 打赏
  • 举报
回复
不能重复使用的变量就不要用同名SESSION来保存.
---------------
对于不同的页面来说,是可以的,但是有一种情况,比如我在同一台电脑上分别用不同身份登录,各自打开同样的页面,那Session的名称肯定是相同的,如何区分两个不同用户的Session呢?这个问题也困扰了我老久了,借楼主的地盘讨论下。。。
vividboy 2005-11-19
  • 打赏
  • 举报
回复
恩,思路确实是这样的,我想看看大家还有没有其他的具体做法

学习,学习。
SeeSunSet 2005-11-19
  • 打赏
  • 举报
回复
不能重复使用的变量就不要用同名SESSION来保存.
JadyZhu 2005-11-19
  • 打赏
  • 举报
回复
做个记号,这个问题也让我头痛。。。
yingjm 2005-11-19
  • 打赏
  • 举报
回复
学习!!
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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