2015-02-23 85 views
0

我正在读的asp.net会话视图状态VS和阅读我有一个疑问,即文章的文章之后的文章说,如果我创建即 会议(“用户名”),会话变量=”用户名”这个值被保存在网络服务器和Web服务器上的第一个请求开始创建的cookie,并将其存储在客户机上,然后检索基于存储客户端计算机上的Cookie值,针对特定用户的会话变量。会话和Cookies asp.net

我的疑惑是 - 如何以及在哪里呢会话变量存储在服务器上。

我的理解是基于sessionID,即存储在客户端机器上的cookie值webserver创建了一个文件夹,并为所有创建的会话变量创建文件并存储数据ie对于存储在web服务器上的所有会话变量,将只存在存储在客户端机器上的一个cookie-如果我在理解上面提到的内容时出错,请纠正我的错误。

回答

2

ASP.Net允许您配置,您希望您的会话变量存储。你可以使用不同的选项的文档可以在这里找到:

https://msdn.microsoft.com/en-us/library/ms178586%28v=vs.140%29.aspx

短的版本是,会话变量是存储在内存中,缺省情况下您的应用程序,但你也可以使用一个单独的进程甚至Sql Server。虽然没有任何选项使用磁盘上的文件夹。那会很慢。如果您真的想在服务器上使用文件夹,则必须编写自己的自定义提供程序。

+0

由于乔尔的快速反应和它回答了我的问题。如果您可以对我所做的陈述发表评论,将会感激不尽(即,对于存储在web服务器上的所有会话变量,只有一个cookie存储在客户端机器上,即以sessionId的形式)。 – Harry 2015-02-23 04:47:43

+0

这在本质上是正确的,但比实际情况要复杂一些。存储在cookie中的令牌不足以获得对会话的访问权限。这将是一个安全漏洞,因为cookie很容易拦截或劫持。该服务器可以在令牌执行额外的验证......例如,它匹配到远程IP /端口,用户代理,主机等 – 2015-02-23 18:03:44

+0

为什么我得到这个结论的原因是 - 当饼干只在客户端浏览器禁用令牌是通过网站url发送的,不知道是否通过http请求头以编程方式发送远程IP /端口我从来没有实现过这个功能,这是asp.net中的内置功能吗? – Harry 2015-02-24 04:03:01