2011-03-29 54 views
0

无论如何,我主要关心的是使用Session。我一直的印象是,如果你使用下面的语句(不,我会):cookies和会话状态对象

Session["newVar1"] = "a new session variable"; 
Session["newVar2"] = "a new session variable"; 
Session["newVar3"] = aLargeVariableThatHoldsLotsOfData; 

您将创建一个保存特定值3个新的会话cookie。但我认为我的ASP书是表明你实际上在你的会话状态对象创建3个新的变量和ASP只会在响应传递一个唯一会话ID(如饼干吗?),并且将获得在这个ID下一个请求和准与您的会话状态对象ID(IIS已存储在内存中..?):

...它创建一个会话状态对象 包含一个唯一的会话ID 每个用户的会话。该ID被传递 回浏览器作为 响应的一部分,然后返回到 服务器与下一个请求。 ASP.NET 然后可以使用会话ID获取 会话状态对象,该对象与请求关联 。

似乎并不适合有大量的流量的网站。一个存储和维护每个网站数千和数千个会话状态实例的服务器似乎有太多过载。
我试图自己看看发生了什么,但是我遇到了麻烦..我无法在我的机器(IE/windows xp)上的任何位置找到我的网站Cookie。我已经检查了C:\Documents and Settings\nicholasr\Cookies\C:\Documents and Settings\nicholasr\Local Settings\Temporary Internet Files,根据this yahoo answer,还存储了IE cookie。我使用权证认证在我的应用程序存储在客户端上的身份验证Cookie,所以从我的网站,一个cookie在某处..
我想我问:
1)如果有人能帮助我了解如何会话状态在幕后工作
2)IE在哪里存储我的网站的Cookie? > <

回答

4

有其表示GUID单个会话cookie。会话值本身存储在服务器上。所以当你写:

Session["newVar1"] = "a new session variable"; 
Session["newVar2"] = "a new session variable"; 
Session["newVar3"] = aLargeVariableThatHoldsLotsOfData; 

一个HTTP cookie可能看起来像这样发送到客户端。这个cookie只包含一个id,而不是实际的值。实际值可以存储在服务器内存,单独的进程或SQL Server中,具体取决于web.config中的<sessionState mode=""。然后,当客户端稍后发送另一个请求时,它会将此cookie ID发送给服务器,并给出id服务器将获取实际值。

客户端浏览器在内存中存储这些Cookie,这意味着如果你关闭它,会话不会丢失,因为会话cookie不是永久性的。

+0

Thx Darin。你知道我在哪里可以找到这个饼干吗? windows xp/IE7 – 2011-03-29 18:44:04

+0

@Nicklamort,你找不到它。它在浏览器的内存中,并随每个请求一起发送。从未储存在任您可以在FireFox中使用像Fiddler或FireBug这样的HTTP分析器来查看这个值是如何附加到每个请求的。 – 2011-03-29 18:45:34

+0

@Darin哦快点..我想它也是一样的我的身份验证cookie。非常感谢你!大大的帮助:) – 2011-03-29 18:47:19