2010-06-17 23 views
1

您會看到下面的代碼,我如何使用會話變量; 所以這三個問題是:HttpSessionState在哪裏,如何,優勢?

  1. 他們在哪裏存儲? (服務器或客戶端)
  2. 它們對每個網頁訪問者都是唯一的嗎?
  3. 當我的工作完成後,我可以使用ajax或簡單的js代碼將其刪除嗎?或者它會被自動刪除..?

sbyte[][] arrImages = svc.getImagesForFields(new String[] { "CustomerName", "CustomerSurName" }); 

Dictionary<string, byte[]> smartImageData = new Dictionary<string, byte[]>(); 
int i = 0; 
foreach (sbyte[] bytes in arrImages) 
{ 
    smartImageData.Add(fieldNames[i], ConvertToByte(bytes)); 
    i++; 
} 

Session.Add("SmartImageData", smartImageData); 

回答

4

瞭解更多關於會議here。回答您的問題:

  1. 取決於您的配置(進程中,會話狀態服務器等),但始終在服務器端。
  2. 是的,每個訪問者都得到一個獨特的cookie。
  3. 您可以通過刪除會話cookie(通常爲ASP.NET_SessionId)或通過調用Session.Abandon()來刪除客戶端。此外,會話在某個(可配置)不活動時段後超時。
+0

「ASP.NET_SessionId」能否讓你明確這一點? – theklc 2010-06-17 13:50:19

+0

客戶端上用於識別用戶會話的cookie稱爲ASP.NET_SessionId。 – ErikHeemskerk 2010-06-17 14:17:03

0

會話變量存儲在服務器上嗎?您可以配置其他狀態管理機制(例如數據庫)。

它們對於每個用戶會話都是唯一的。會話超時後它將被刪除。

0

會話狀態信息存儲在服務器上,而不是客戶端上。會話過期時,會話信息將完全自動刪除。您可以通過web.config文件更改會話到期持續時間。會話數據對每個用戶都是唯一的。您可以隨時使用它使用ajax或更改它,甚至刪除它。

如果您希望會話數據持久化,您可以配置數據庫以存儲會話信息。您甚至可以配置狀態服務器來存儲會話數據。

0

會話通常存儲在服務器上(取決於您的服務器/應用程序配置)。每個唯一的瀏覽器連接都分配了一個會話ID,服務器使用該會話ID將客戶端與後續連接中的唯一服務器會話相關聯。會話ID被傳遞給客戶端以存儲爲cookie,或者作爲附加到服務器的每個url請求的參數。

它被用作在HTTP調用之間保持客戶端狀態的一種手段。

會話在不活動的可配置時間後過期。但是在.NET中,您可以調用Session.Abandon()來結束當前會話。