Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET状态管理之九(会话Session)

ASP.NET状态管理之九(会话Session)2012-01-22 博客园 aierongASP.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;