需要有关ASP.net的HttpApplicationState的教育
-
06-07-2019 - |
题
今天我对与ASP.net的HttpApplicationState相关的2个问题感到困惑。我的问题如下
-
如果我使用StateServer进行会话管理(我希望用于我的Web园区部署的out proc会话管理),假设 HttpApplicationState(我通过系统访问)是否安全.Web.UI.Page.Application属性)也存储在StateServer 中,就像Session一样?因此,如果我的工作进程A写入值“10”,那么在Page.Application中,稍后在某个时间点在workerprocess B中运行的另一个请求必须看到此“10”。对于同一把钥匙 - 它是否正确?
-
我的一位开发人员告诉我,他在测试中发现,在StateServer场景中,如果他有100个键值条目插入到Page.Session中,那么当他试图读取任何一个来自不同请求的密钥,workerprocess将整个100个条目带入活动的workerprocess内存空间,然后提供请求实际提出的密钥。是真的吗?
醇>
如果有人能帮助我消除这方面的困惑,我将不胜感激。
谢谢!
解决方案
-
StateServer仅支持会话状态,应用程序状态仅限于AppDomain。
-
StateServer存储会话的序列化。它无法知道如何访问特定的键值。当访问时,会话被重新水合到需要它的应用程序中,并在请求期间用作正常的会话数据。
醇>
其他提示
-
据我所知,进程外状态服务器不存储HttpApplicationState数据。你可以很容易地测试这个,但我怀疑它确实如此。
-
我认为这也不是真的。会话存储基本上是一个哈希表。在哈希表中查找单个键只应返回关联的值。你不应该看到你描述的行为。同样,您应该能够轻松地进行测试。
醇>
不隶属于 StackOverflow