我有一個用戶控件與asp:文本框控件,它也執行回發。如果兩個用戶(都由不同的會話變量標識)在同一秒內回發頁面,則一個用戶將在文本框中看到其他用戶的視圖狀態值。我已經通過將文本框,會話變量和cookie設置爲相同的值(標識用戶的相同值)並在所有三個不匹配時寫入日誌來驗證發生了這種情況。文本框的值是以其他用戶的值記錄的值。ASP.net用戶控件跨用戶緩存視圖狀態?
ASP.net 3.5,IIS 6
有沒有人遇到過這個問題。
我有一個用戶控件與asp:文本框控件,它也執行回發。如果兩個用戶(都由不同的會話變量標識)在同一秒內回發頁面,則一個用戶將在文本框中看到其他用戶的視圖狀態值。我已經通過將文本框,會話變量和cookie設置爲相同的值(標識用戶的相同值)並在所有三個不匹配時寫入日誌來驗證發生了這種情況。文本框的值是以其他用戶的值記錄的值。ASP.net用戶控件跨用戶緩存視圖狀態?
ASP.net 3.5,IIS 6
有沒有人遇到過這個問題。
UserControl本身不應該緩存任何用戶。你必須自己做一些ViewState來做這件事 - 可能是在較低的層次上,比如將視圖狀態保存到數據庫時(如果你有自定義代碼的話)。你必須發佈所有相關的代碼給任何人來弄清楚什麼是錯的。
是否有一個代理服務器參與等式?我已經看到了確切的症狀,其中代理服務器正在從其他用戶提供緩存頁面。
有趣的是,你應該提到......在.com革命剛剛開始的時候,我們的主要競爭對手在我們做了一個月左右之前就推出了他們的eC網站。當然,我們直接去了網站試用,並且出於類似的原因(我們共享了辦公室IP,他們使用IP作爲會話的一部分)「共享」購物車。那是1997年。你最近看到過這樣的事情嗎? – 2010-05-25 23:01:44
這是幾年前在客戶多站點網絡上訪問內部Web應用程序。他們使用站點之間的代理來節省WAN帶寬。 – 2010-05-25 23:17:40
不,不涉及代理服務器。我知道這不應該發生,並且一直進展良好,直到兩個用戶在少於1000毫秒內回發。所有標準的.net服務器控件和一個RadTabStrip。 – Jason 2010-05-25 23:52:39
你能發表一小段代碼來說明這一點嗎?視圖狀態實際上在回發時作爲隱藏變量傳遞,所以問題可能在於代碼中的其他地方。 – 2010-05-25 22:57:03