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;