out of proc的会话变量会导致内存问题?

时间:2011-10-06 21:03:03

标签: c# asp.net session-state session-variables

在我当前的asp.net应用程序中,我将session variables存储在SQL server中。如果指定InProc,则会话将保留在服务器内存中,但对于out of proc(在我的情况下),会话将保留在SQL Server中。

这是真的吗?根据我的阅读,每个需要会话访问的请求(基本上每个页面请求)都会从db反序列化会话,并在请求完成后将其保存回来。这意味着一旦它被检索,这些值将保留在Web服务器上。这与InProc那么有什么不同?

对于Out of Proc,它是否仅在请求时检索一个会话变量?否则,它听起来像InProc一样。我错过了什么。

1 个答案:

答案 0 :(得分:4)

  

这是真的吗?

是的,这是真的。

  

根据我的阅读,每个需要会话访问权限的请求   (基本上每个页面请求)将从db反序列化会话   并在请求完成后将其保存。这意味着   一旦它被检索,它将保留在Web服务器上。怎么   这与InProc有什么不同呢?

值仅在HTTP请求期间存储在内存中。在请求开始时,它们从SQL Server加载,并在请求结束时将它们保存到SQL Server中。这与InProc不同,InProc的值在请求之间保存在内存中。并且,由于服务器场中的不同节点可以提供不同的请求(来自同一用户),因此使用SQL Server可以保证服务器场中的所有节点共享相同的会话值。