2009-06-18 100 views
1

今天我對2個與ASP.net的HttpApplicationState相關的問題感到困惑。我的問題如下需要關於ASP.net的HttpApplicationState的教育

  1. 如果我使用的StateServer我的會話管理(即我想用我的Web園部署了PROC會話管理的東西),它是安全假設HttpApplicationState(我通過System.Web.UI.Page.Application屬性訪問)也存儲在StateServer中,就像Session?因此,如果我的workerprocess A向Page.Application中寫入一個值「10」,那麼稍後在workerprocess B中運行的另一個請求必須爲同一個鍵看到這個「10」 - 它是否正確?

  2. 我的一位開發人員告訴我,他在他的測試中發現,在StateServer場景中,如果他有100個鍵值條目插入到Page.Session中,那麼當他嘗試讀取任何密鑰一個不同的請求,workerprocess將整個100個條目帶入活動workerprocess內存空間,然後提供請求實際請求的密鑰。是真的嗎?

如果有人能夠幫助我消除這方面的困惑,將不勝感激。

謝謝!

回答

3
  1. 的StateServer支持會話狀態而已,應用程序狀態被限制在應用程序域。

  2. StateServer存儲Session的序列化。它無法知道如何訪問特定的鍵值。當訪問時,會話被重新合併到需要它的應用程序中,並在請求期間用作正常會話數據。

+1

Re#1:這也意味着如果您打開了WebGarden,webgarden的每個實例都有自己的應用程序狀態。 – 2009-06-18 10:55:06

0
  1. 據我所知,out進程狀態服務器不存儲HttpApplicationState數據。你可以很容易地測試這個,但我懷疑它確實如此。

  2. 我不認爲這是真的。會話存儲基本上是一個哈希表。在散列表中查找單個鍵應該只返回相關的值。你不應該看到你描述的行爲。再次,你應該能夠輕鬆地進行測試。