2012-06-29 67 views
0

我們有一個在.NET Framework 4.0上運行的ASP.NET頁面。使用HttpContext.Current.Application存儲值

目前我們在應用程序的整個生命期中存儲了一些值,這些值在HttpContext.Current.Application [「keyToTheValue」]

這是錯誤的地方存儲值,我們需要一個無限期的時間, 或我們如何配置應用程序不回收這些值?

哦,重要的是要注意:我們實際上在集成模式下運行頁面,也許這對應用程序緩存有一定的影響。

回答

1

如果你的數據是敏感然後將其存儲在您的數據庫使用它lifetime..it它不是那麼使用永久Cookies和設置它的保質期爲最大那麼多敏感......

+0

你能解釋一下你的意思嗎?**持久**餅乾? – SwissCoder

+1

持久性cookie存儲在客戶端計算機上的文本文件中。直到它們被過期或手動刪除。它們是這樣寫的HttpCookie myCookie = new HttpCookie(「myCookie」); //在cookie中添加鍵值 myCookie.Values.Add(「userid」,objUser.id.ToString()); //設置cookie過期日期時間。使它持續12個小時。 myCookie.Expires = DateTime.Now.AddHours(12); //最重要的是,將cookie寫入客戶端。 Response.Cookies.Add(myCookie) –

+1

根據確切的用途,這可能是一個問題,當用戶有Cookie被禁用.... – kad81

1

使用Application對象沒有什麼問題,但是如果你想在應用程序關閉的情況下保持你的數據(這種情況遲早會發生的話),你最好將你的值存儲在數據庫。

+0

謝謝。當前的情景需要在應用程序回收時刪除這些值,我只是想知道如何避免隨機/不可預測的應用程序回收。 – SwissCoder

+1

這聽起來像是你真的不想刪除應用程序回收的值,而是基於你認爲更可預測的其他東西。也許將值存儲在數據庫中,然後編寫自己的代碼,以便按照您選擇的日程安排(或基於事件)進行清理。然後,如果您有意外的應用程序重新啓動,則不會丟失數據。 – kad81

+0

System.Web.HttpContext.Current.Application是否有大小限制? – Heinrich

1

這取決於數據和環境,但對於使用應用程序來獲取全局值的簡單數據可能沒有問題。您應該查看System.Web.Caching命名空間以獲得更高級的方案。此外,如果您處於某個網絡服務器場或羣集中,則可能需要推出自己的全局數據存儲,以便您可以在多臺服務器上共享它。

1

有中沒有問題將數據存儲在Application.But中,但它具有重置IIS後重置的限制。 因此根據您的情況使用它。