2009-02-20 129 views
3

我正在制作一个使用会话变量的应用程序。我创建了一个“HistoryLine”类,另一个名为“HistoryLineCollection”的“HistoryLine”列表。然后,我将HistoryLineCollection的实例保存到会话中,如下所示:ASP.net会话默认共享?

Session [“HistoryLines”] = hLines;

问题是,当我在另一台计算机上看这个时,我看到了相同的列表!我认为客户端独特的会话?我已经查看了sessionState,可能SessionID被克隆了,但是我看不到它。任何人有想法?

回答

1

不,asp.net会话不共享。发生这种情况的一种方法是在一台计算机上浏览该应用程序,然后在另一台计算机上使用该链接(将其发送给某人)。在这种情况下,如果您碰巧禁用了Cookie,则会话ID位于Url上。另一个人将在同一场会议上。 如果情况并非如此,那么真的看看你正在使用的类,特别是标记为静态的任何东西。

+0

我忽略了我的列表是共享的。使它不共享并实例化对象的技巧! – miccet 2009-02-20 22:21:09

0

检查创建要放入会话的列表的代码。您可能正在为每个会话创建相同的列表。

+0

我使用相同的类来生成项目列表,如果这就是你的意思。我设置了一个会话变量来保存项目列表,并以同样的方式获得,并进行演员表演。 – miccet 2009-02-20 22:02:14

1

是创建,然后把它放入Session以某种方式静态(又名共享)的类的成员?