在我的AppStart.cshtml中,我從數據庫中獲取一些數據,進行計算,序列化/反序列化json字符串等,然後通過執行類似的操作將結果存儲在一對AppState變量中以下內容:(C#)在AppState和Session中存儲數據
AppState["myVar1"]="aString";
AppState["myVar2"]=anArray;
這些變量被頻繁訪問,是一個有點重來定義,所以我認爲像這樣的意義,而不是從頭開始創建每一個需要它的時候的數據。即使不需要優化,它仍然對我有意義,因爲它通過在需要數據的一堆地方沒有相同的代碼來提高可讀性和明確的可維護性。
同樣,我通過在用戶登錄時將數據放入會話中來按用戶進行類似的操作,例如,
Session["userVar1"]="myString";
Session["userVar2"]=myAray;
不過,我剛纔讀的,我們永遠不應該依賴於存儲在這些數據仍然存在,當我們想讀他們,因爲他們存儲在其中可能已經清除了服務器內存。 這是真的嗎? 所以當我們想要訪問其中的一個時,我們應該首先檢查它是否爲空?如果我們幸運的話,它不是空的,我們可以馬上使用它,否則我們再次設置它。 這是應該如何使用存儲在AppState和Session中的數據?如果是這樣,如果它們爲空,重新設置它們的好方法是什麼?我想做一些創建一個函數來設置它們,如果它們爲空?
好的,這看起來非常好。謝謝你的答案。我會盡快嘗試。 – Clox
對不起,在這裏新手問題,但我似乎無法弄清楚如何使用從類文件中的AppState等。仍然是新的這個..我得到:「名稱」AppState「不存在於當前的上下文中」。我想我必須使用using-keyword來導入它,但我無法弄清楚如何去做。 – Clox
@Clox:取決於它存在的位置。請記住,這個類仍然與Web應用程序緊密耦合(憑藉使用應用程序和會話),所以它應該在同一個項目中。我以前從未使用過'AppState',而且自從使用'Session'以來已經很長時間了。但正如我記得'Session'是'HttpContext'的一部分。所以,至少在很久以前,它會被System.Web.HttpContext.Current調用。會話「(http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx)在基本頁面類(或基本控制器類)上,」會話「剛剛映射到該屬性。 – David