我在頁面類(不是Global.asax)中定義的靜態變量中保存了一些信息。我只聲明代碼中的變量,如:ASP.NET靜態變量的生存期
protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;
並定義PageLoad事件中的變量。例如,我從數據庫中檢查ID,如果它與SomeGlobalUnsecureID不同,我從其他地方更新SomeGlobalUnsecureID和String,否則保持原樣。這在我的應用中非常安全。邏輯(即那些數據不安全,每個人都可以訪問它們,沒問題);只是我要完成的事情是
保持相同的內存量,無論用戶的連接
變化當且僅當持續的信息是從一個在 「記憶」不同(因爲實際閱讀該字符串是耗時 我。
現在,因爲我使pageLoad的檢查,我在重新加載網頁沒有問題。但是我的頁面充滿的WebMethods,有時我看到塔t靜態變量歸零。而奇怪的部分是;即使靜態變量歸零(所以 - >無服務器或應用程序池重啓等),會話仍處於活動狀態。
這對我來說真的很奇怪。我假設靜態變量將保持其值,直到應用程序(以某種方式)結束。但即使會話沒有過期,靜態變量也被清零。你有什麼建議?使用應用程序變量是更好的選擇嗎?我在網上閱讀的所有文檔都建議使用靜態變量而不是應用程序變量,我是否需要聲明它們不同?
您問題頂部的聲明是* not * static,順便說一句。 – 2012-01-18 23:35:36
:)好的,更正 – 2012-01-18 23:45:55
'在PageLoad事件中定義變量'。我想你的意思是初始化?定義一個變量就是你在編寫'protected static int Something;' – 2013-02-13 22:59:05