2014-09-12 26 views
-1

某些變量未被重置並在頁面事務處理後仍保留其值 , 以及甚至在瀏覽器關閉後立即重新打開並重新瀏覽同一網頁,這是正常的嗎?VB.NET中的變量在頁面事務之間保留其值是否正常?

在我的VB ASP.NET Web應用程序中,用戶執行幾個步驟。

我發現其中最後一步之後,如果用戶刷新頁面幾次錯誤, 然後關閉瀏覽器(IE11), 然後打開新的瀏覽器並進入現場, 時的Page_Load()被調用的Visual Basic變量有時不會重置,並且在頁面先前瀏覽時仍具有先前的價值。

+3

如果你要顯示一些代碼,例如,如果變量是'Shared',那麼它就可以解釋它。 – 2014-09-12 13:32:28

+0

你使用Session或Cookie變量嗎? – 2014-09-12 13:37:09

回答

1

它取決於跟蹤該變量的狀態。

如果該變量的本地範圍是一個方法,那麼它不會保持不變。一旦該方法完成,該值就會丟失。

如果變量是對象上的實例值,只要該對象在內存中,它就會被保留。一旦對象被丟棄(通常當沒有變量引用它時),該值就會丟失。

如果變量是靜態的(VB中的Shared),那麼它的作用域爲應用程序域。只要應用程序正在運行,它將繼續保持其價值。一旦應用程序退出,值就會丟失。

如果變量保存在會話中,它將保留其值直到會話結束(無論是在代碼中,通常由用戶註銷或由應用程序退出)。會話結束後,該值將丟失。

如果變量是從cookie填充的,則它存在於客戶端計算機上,並在客戶端訪問應用程序時隨時提供給應用程序。創建cookie時可以設置Cookie過期時間,一旦過期,該值就會丟失。

如果變量是從某些外部持久性(例如數據庫)填充的,那麼它將保留其值,直到持久性發生更改。應用程序可以關閉,重新啓動,甚至可以在不同的機器上運行,並且持久性仍然保持該值。

看看你的變量並確定它的範圍,它會告訴你它什麼時候會失去它的價值。