今天我对与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内存空间,然后提供请求实际提出的密钥。是真的吗?
如果有人能帮助我消除这方面的困惑,我将不胜感激。
谢谢!
答案 0 :(得分:3)
StateServer仅支持会话状态,应用程序状态仅限于AppDomain。
StateServer存储会话的序列化。它无法知道如何访问特定的键值。当访问时,会话被重新水合到需要它的应用程序中,并在请求期间用作正常的会话数据。
答案 1 :(得分:0)
据我所知,进程外状态服务器不存储HttpApplicationState数据。你可以很容易地测试这个,但我怀疑它确实如此。
我认为这也不是真的。会话存储基本上是一个哈希表。在哈希表中查找单个键只应返回关联的值。你不应该看到你描述的行为。同样,您应该能够轻松地进行测试。