ASP.NET 允許您使用會話狀態保存每個活動的 Web 應用程序會話的值,會話狀態是 HttpSessionState 類的一個實例。
會話狀態與應用程序狀態相似,不同的只是會話狀態的范圍限於當前的浏覽器會話。如果有不同的用戶在使用您的應用程序,則每個用戶會話都將有一個不同的會話狀態。此外,如果同一用戶在退出後又返回到應用程序,第二個用戶會話的會話狀態也會與第一個不同。
會話狀態采用鍵/值字典形式的結構來存儲特定於會話的信息,這些信息需要在服務器往返行程之間及頁請求之間進行維護。
可以使用會話狀態來完成以下任務:
1.唯一標識浏覽器或客戶端設備請求,並將這些請求映射到服務器上的單獨會話實例。
2.在服務器上存儲特定於會話的數據,以用於同一個會話內的多個浏覽器或客戶端設備請求。
3.引發適當的會話管理事件。此外,可以利用這些事件編寫應用程序代碼。
一旦將應用程序特定的信息添加到會話狀態中,服務器就會管理該對象。根據您指定的選項的不同,可以將會話信息存儲在 Cookie 中、進程外服務器中或運行 Microsoft SQL Server 的計算機中。
默認情況下,所有 ASP.NET 應用程序都啟用 ASP.NET 會話狀態。
會話變量
如何:保存會話狀態中的值
會話變量存儲在通過 System.Web.HttpContext.Session 屬性公開的 SessionStateItemCollection 中。
會話變量集合按變量名稱或整數索引來進行索引。僅需通過名稱引用會話變量即可創建會話變量。無需聲明會話變量或將會話變量顯式添加到集合中。
例如,下面的代碼示例創建分別表示用戶的名字和姓氏的會話變量,並將它們設置為從 TextBox 控件檢索到的值。
Session["FirstName"] = FirstNameTextBox.Text; Session["LastName"] = LastNameTextBox.Text;
默認情況下,會話變量可以為任何有效的 .NET 類型。
例如,下面的代碼示例將值的 ArrayList 存儲在名為“StockPicks”的會話變量中。注意,由“StockPicks”會話變量返回的值在從 SessionStateItemCollection 檢索出來時必須強制轉換為適當的類型。
ArrayList stockPicks = (ArrayList)Session["StockPicks"]; Session["StockPicks"] = stockPicks;