会议在哪里?

问题描述 投票:0回答:2

我最近正在学习有关会话的知识,到目前为止,我了解会话和cookie分别用于服务器端和客户端以跟踪请求的状态。并且将在服务器上创建一些线程或实例来处理不同的请求,假设来自同一客户端的请求A和B有2个,该客户端的会话在请求A中由线程1设置,请求B由另一个线程处理线程2,显然请求B可以从会话中获取信息。这意味着“会话”不存储在某个线程上,在这种情况下不存储在线程1上,因为请求B也可以获得存储在“会话”中的信息。所以基于上面的场景,我的问题出现了:

  1. 会话存储在哪里?我假设某个地方可以被所有线程或实例访问。
  2. “会话清单”和应用程序池之间的关系是什么(我在这里指的是IIS和.Net)
  3. 如果我关闭服务器并重新启动它,所有会话都会消失吗?如果我们想要坚持会议,需要什么技术?
asp.net session session-cookies session-state application-pool
2个回答
0
投票
  1. 会话数据可以是内存中(在服务器上),也可以是外部的。有关详细信息和选项,请参阅此处:https://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx。请注意,也可以自定义该机制,以便存储可以完全专有。
  2. 我从未听说过任何一种叫做“会话库存”的东西。如果将此与ASP.NET的会话管理相关联,则与IIS应用程序池几乎没有关系。应用程序池管理您的应用程序,同时它在IIS中运行。您可以在这里找到更多信息:https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/
  3. 如果您的应用程序配置为在内存中存储会话数据(这是默认值),那么,当应用程序重新启动时,所有数据都将消失(重新启动后将无法识别先前发出的那些会话ID的用户)。因此,为了解决这个问题,我们通常喜欢使用外部会话存储。会话状态服务器是一个不错的选择,或者是数据库。它很容易配置。请参阅以下步骤:https://msdn.microsoft.com/en-us/library/ms178586.aspx

0
投票

简而言之! (我认为你在谈论Native会话。会话状态服务器都不是数据库会话)

  1. 会话存储在Web服务器内存中。
  2. 让我举例说明。很明显,您的网站需要在IIS中托管。如果你想托管3个网站有.net 2.0,3.5和4怎么办?这就是应用程序池的来源。将这些.net 3不同版本安装到IIS。分别使用.net 2.0,3.5和4创建3个不同的应用程序池,并正确设置3个网站。请注意,可以与多个网站共享相同的应用程序池。
  3. 所有会话不仅会关闭服务器,还会重新启动IIS。如果需要持久会话,请使用会话状态服务器或数据库会话管理器。
© www.soinside.com 2019 - 2024. All rights reserved.