ASP.NET:会话变量问题

时间:2011-08-03 21:10:50

标签: asp.net session variables object state

作为asp.net的quazi-newbie,我对会话变量有疑问。

我正在为我的公司构建一个Intranet应用程序。当然它是一种野兽,并且有一些需要存储的变量(类对象)。比如,一个名为“Driver”的类对象,它具有FirstName [String]和LastName [String]。

现在说我存储这样的对象:

Dim objDriver as Driver

objDriver.FirstName = "Joe"
objDriver.LastName = "Smith"

Session.Contents("Driver") = objDriver

此代码似乎执行并且运行良好。现在我的问题是,如果Suzy登录不同的计算机并尝试应用程序,她会在执行时看到Joe的信息

Dim objDriver as Driver

objDriver = Session.Contents("Driver")

如果有人能对此有所了解,我们将不胜感激。

谢谢,

杰森

4 个答案:

答案 0 :(得分:1)

不,Suzy什么都看不到。为此,可以使用应用程序缓存...

  

会话由可以读取的唯一标识符标识   使用SessionID属性。为会话状态启用时   ASP.NET应用程序,每个请求应用程序中的页面   检查从浏览器发送的SessionID值。如果没有SessionID   提供了值,ASP.NET启动一个新会话和SessionID   该会话的值将通过响应发送到浏览器。

http://msdn.microsoft.com/en-us/library/ms178581.aspx

改为使用:

dim foo = HttpContext.Current.Application("foo");

HttpContext.Current.Application("foo") = foo;

答案 1 :(得分:0)

会话状态特定于浏览器会话。所以不,Susie不会看到Joe的数据。即使Joe在同一台计算机上打开一个新的浏览器窗口,他也不会再在同一个会话中了。

应用程序状态可能是一个不同的故事 - 如果你真的想要在如此广泛的范围内共享变量,你可以研究一下。

答案 2 :(得分:0)

会话是按会话创建的,因为它可以被理解。如果您使用google Chrome登录并创建一些变量,则无法从同一台计算机上访问Firefox中的这些变量。

答案 3 :(得分:0)

每个浏览器的每个用户都存在会话对象。因此,Suzy会在Firefox上进行会话,但在Internet Explorer上会有不同的会话。这是因为每个浏览器都会分配一个唯一的cookie。