在我当前的asp.net
应用程序中,我将session variables
存储在SQL server
中。如果指定InProc
,则会话将保留在服务器内存中,但对于out of proc
(在我的情况下),会话将保留在SQL Server中。
这是真的吗?据我了解,对于每个需要会话访问的请求(基本上是每个页面请求),它将从db反序列化会话,并在请求完成后将其保存回去。这意味着一旦检索,这些值将保留在Web服务器上。这与InProc
有何不同?
对于Out of Proc
,仅在请求时才检索一个会话变量吗?否则,听起来像InProc
一样。我想念什么。
最佳答案
这是真的吗?
对,是真的。
根据我的阅读,每个需要会话访问的请求
(基本上每个页面请求)都会反序列化数据库中的会话
并在请求完成后将其保存回去。这意味着
检索到的值将保存在Web服务器上。怎么
这与InProc不同吗?
值仅在HTTP请求期间存储在内存中。在请求的开头,它们是从SQL Server加载的,在请求的结尾,它们是保存到SQL Server的。这与InProc不同,在InProc中,两次请求之间的值都保存在内存中。并且由于服务器场中的不同节点可以满足(来自同一用户的)不同请求,因此使用SQL Server可以保证服务器场中的所有节点将共享相同的会话值。