2009-12-01 83 views
0

我們有一個錯誤,我們正在嘗試修復。它看起來像一個用戶可以看到另一個用戶的數據,他們同時訪問相同的aspx頁面。ASP.net中的狀態主頁面

我想知道:如果我們將數據存儲在母版頁的屬性中,那麼同時運行的所有頁面都會看到該數據。

有一個母版頁:

public class MyMasterBase : System.Web.UI.MasterPage 
{ 
    private int myInt; 
} 

創建一個從aspx頁面引用母版頁:

MyMasterBase master = Page.Master as MyMasterBase; 

兩個用戶然後調用aspx頁面在同一時間:

  • 第一個用戶將myInt設置爲1
  • 第二個用戶s ets myInt爲2
  • 如果第一個用戶讀取myInt值,它會是什麼?

我預計,這將是1,但如果是2那就說明我們的錯誤:)

感謝

西拉

+0

你可以發佈示例代碼。 – 2009-12-01 16:05:47

+0

數據實際上是否意味着以某種方式顯示給每個用戶?不知道他們是如何「看到」它? – IrishChieftain 2009-12-01 16:06:24

回答

1

聽起來像一個緩存的問題給我。 MasterPages不會在會話之間持久保存數據,但緩存將會。在項目中的任何地方都可以找到將信息放入緩存並確保沒有用戶或會話特定數據進入緩存的任何地方。緩存應該只保存適用於給定時間的所有用戶的信息。

+0

Thnaks爲答案,事實證明是我們運行Windows工作流程的一個問題 – 2009-12-02 09:52:20

1

這取決於你如何處理myInt。如果您在會話中存儲其值,請檢查您的用戶身份(Page.User.Identity.Name),如果它們相同,您將讀取最新的設置值。如果您將其存儲在ViewState中,則每個用戶都將讀取他自己的值。如果你不堅持它(我假設是這種情況),該值不會被保存(每個用戶的每個請求重置)。可能你想要的是這樣的(只是一個猜測):

int property MyInt { 
    get { return Convert.ToInt32(ViewState["MyInt"]);} 
    set { ViewState["MyInt"] = value; } 
}