作为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")
如果有人能对此有所了解,我们将不胜感激。
谢谢,
杰森
答案 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。