今天我对与ASP.net的HttpApplicationState相关的2个问题感到困惑。我的问题如下

  1. 如果我使用StateServer进行会话管理(我希望用于我的Web园区部署的out proc会话管理),假设 HttpApplicationState(我通过系统访问)是否安全.Web.UI.Page.Application属性)也存储在StateServer 中,就像Session一样?因此,如果我的工作进程A写入值“10”,那么在Page.Application中,稍后在某个时间点在workerprocess B中运行的另一个请求必须看到此“10”。对于同一把钥匙 - 它是否正确?

  2. 我的一位开发人员告诉我,他在测试中发现,在StateServer场景中,如果他有100个键值条目插入到Page.Session中,那么当他试图读取任何一个来自不同请求的密钥,workerprocess将整个100个条目带入活动的workerprocess内存空间,然后提供请求实际提出的密钥。是真的吗?

  3. 如果有人能帮助我消除这方面的困惑,我将不胜感激。

    谢谢!

有帮助吗?

解决方案

  1. StateServer仅支持会话状态,应用程序状态仅限于AppDomain。

  2. StateServer存储会话的序列化。它无法知道如何访问特定的键值。当访问时,会话被重新水合到需要它的应用程序中,并在请求期间用作正常的会话数据。

其他提示

  1. 据我所知,进程外状态服务器不存储HttpApplicationState数据。你可以很容易地测试这个,但我怀疑它确实如此。

  2. 我认为这也不是真的。会话存储基本上是一个哈希表。在哈希表中查找单个键只应返回关联的值。你不应该看到你描述的行为。同样,您应该能够轻松地进行测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top