2012-09-17 62 views
0

我的數據存儲在按鍵和值存儲數據的方式是什麼?

HttpContext.Current.Application.Add(appKey, value); 

而且通過這一次讀取數據:

HttpContext.Current.Application[appKey]; 

這樣做的好處,我正在使用一個鍵的值,而是一個很短的時間後(約20分鐘)它不起作用,並且我找不到[appKey],因爲iis數據中的應用程序生命週期將會丟失。 我想知道的是另一種方式來存儲我的數據的關鍵和價值? 我不想SQL服務器,文件,...並希望在服務器上存儲數據不在客戶端上

我存儲用戶一些數據。

感謝您的幫助

回答

0

您可以創建在用戶的計算機上放置一個永久性的Cookie,從而使會話不會過期,或增加會話超時,將更好地爲您的具體情況的值/用戶

How to create persistent cookies in asp.net?

Session timeout in ASP.NET

+0

如果此會話存儲在內存中(默認),並且IIS回收應用程序,則會話將不起作用。無論你有多大的超時設置,如果AppDomain得到回收,你存儲在會話中的所有內容都將丟失。 Cookie可能確實是一種解決方案,但請注意,它們應該用於存儲不敏感的每用戶數據,而OP則使用的是全局應用程序範圍,而不是每個用戶。 –

+0

@DarinDimitrov,但OP正在詢問是否存儲用戶的數據。爲什麼你更喜歡存儲在應用程序範圍用戶數據副會話範圍? – wes

+0

OP在哪裏陳述他想要存儲用戶數據? –

3

由於IIS可以回收和丟棄任何緩存/存儲器的內容在任何時候,你會得到的數據持久化的唯一途徑是STOR在IIS之外。一些例子是; (是的,我包括你說你不希望只是讓名單更完整一些,隨意跳過它們)

  • 一個SQL數據庫(有很多免費的,如果價格昂貴)
  • 一個的NoSQL數據庫(有同樣的事情,不少免費的,通常更易於使用的鍵/值)
  • 文件(你還說你不想)
  • 一些樣外部內存緩存,AppFabric緩存或memcached。
  • 餅乾(大小比較有限,並以任何方式默認爲不固定)
+2

+1,爲這個問題的真正答案。 OP已經提出了這個問題,我告訴他,除非他將這些信息從AppDomain中解放出來,否則當IIS回收應用程序時他會失去它,但我想他希望得到第二個意見。 –

0

你說的是持續的數據超出了會議的範圍。所以你將不得不使用某種形式的持久存儲(數據庫,文件,緩存服務器)。

你有沒有考慮過使用AppFabric。這實際上很容易實現。您可以使用nuget包直接從您的代碼訪問它,或者您可以將其配置爲會話存儲。 (我認爲)做後者意味着你會擺脫會話超時問題。

0

您是否明白,無論您決定在應用程序中存儲什麼,您的應用程序中的所有用戶都可以使用它嗎?

現在就您的實際問題,您計劃存儲什麼樣的數據?如果它的用戶敏感數據,那麼將它存儲在會話中可能是有意義的。如果它是客戶特定的並且不包含任何敏感信息,那麼Cookie可能是一種合理的方式。

如果它確實是一個應用程序範圍的數據,並且它對於您的應用程序的每個用戶都必須相同,那麼您可以進行配置更改以確保它在20分鐘後不會過期。

相關問題