在我当前的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可以保证服务器场中的所有节点将共享相同的会话值。

09-27 04:42