2010-05-25 78 views
0

我有一個用戶控件與asp:文本框控件,它也執行回發。如果兩個用戶(都由不同的會話變量標識)在同一秒內回發頁面,則一個用戶將在文本框中看到其他用戶的視圖狀態值。我已經通過將文本框,會話變量和cookie設置爲相同的值(標識用戶的相同值)並在所有三個不匹配時寫入日誌來驗證發生了這種情況。文本框的值是以其他用戶的值記錄的值。ASP.net用戶控件跨用戶緩存視圖狀態?

ASP.net 3.5,IIS 6

有沒有人遇到過這個問題。

+0

你能發表一小段代碼來說明這一點嗎?視圖狀態實際上在回發時作爲隱藏變量傳遞,所以問題可能在於代碼中的其他地方。 – 2010-05-25 22:57:03

回答

0

UserControl本身不應該緩存任何用戶。你必須自己做一些ViewState來做這件事 - 可能是在較低的層次上,比如將視圖狀態保存到數據庫時(如果你有自定義代碼的話)。你必須發佈所有相關的代碼給任何人來弄清楚什麼是錯的。

+0

我只是用相對的代碼再次問這個問題嗎?我是這個網站的新手。我知道我的代碼沒有修改視圖狀態,唯一涉及的第三方控件是來自Telerik的RadTabStrip。我通過設計知道.Net框架不應該這樣做,但我希望可能有人已經談論過這個,而我的谷歌技能只是缺乏。我發現奇怪的是,它只發生在交易在一秒之內。 – Jason 2010-05-25 23:37:40

+0

你可以編輯這個問題來添加代碼。某處的某些代碼可能使用時間戳作爲緩存鍵,並使用第二個分辨率。 – EMP 2010-05-26 00:26:55

0

是否有一個代理服務器參與等式?我已經看到了確切的症狀,其中代理服務器正在從其他用戶提供緩存頁面。

+0

有趣的是,你應該提到......在.com革命剛剛開始的時候,我們的主要競爭對手在我們做了一個月左右之前就推出了他們的eC網站。當然,我們直接去了網站試用,並且出於類似的原因(我們共享了辦公室IP,他們使用IP作爲會話的一部分)「共享」購物車。那是1997年。你最近看到過這樣的事情嗎? – 2010-05-25 23:01:44

+0

這是幾年前在客戶多站點網絡上訪問內部Web應用程序。他們使用站點之間的代理來節省WAN帶寬。 – 2010-05-25 23:17:40

+0

不,不涉及代理服務器。我知道這不應該發生,並且一直進展良好,直到兩個用戶在少於1000毫秒內回發。所有標準的.net服務器控件和一個RadTabStrip。 – Jason 2010-05-25 23:52:39