ASP.NET状态管理之会话状态
ASP.NET 提供了会话状态管理,使您可以根据多种请求存储与唯一浏览器会话相关联的信息。您可以存储由键名或数字索引引用的值的集合。您可以使用 HttpSessionState 类访问会话值和功能,该类可通过当前 HttpContext 的 Session 属性或 Page 的 Session 属性进行访问。
会话数据通过唯一标识符与特定浏览器会话相互关联。默认条件下,该标识符存储在浏览器的不过期会话 Cookie 中,但是您也可以在应用程序配置的 sessionState 元素中,将 cookieless 属性设置为 true 或 UseUri,以此方法配置应用程序,将会话标识符存储在 URL 中。 您可以通过指定 cookieless 属性的 UseDeviceProfile 值,让 ASP.NET 确定浏览器是否支持 Cookie。 您也可以为 cookieless 属性指定 AutoDetect 值,让 ASP.NET 确定是否为浏览器启用 Cookie。 如果指定 UseDeviceProfile 后浏览器支持 Cookie,或指定 AutoDetect 后浏览器启用了 Cookie,则会话标识符将存储在 Cookie 中;否则它将存储在 URL 中。
第一次请求过程中会话将会启动,并且在达到 Timeout 属性中指定的分钟数之前如果浏览器未发送新的请求,当前的会话值将持续有效。 新会话开始后将引发会话 Start 事件。 会话启动时您可以使用此事件执行任何其他工作,例如设置默认会话值。如果会话超时,将调用 Abandon 方法,或者关闭 ASP.NET 应用程序,此时将引发会话 End 事件。 您可以使用此事件执行任何必要的清理操作。仅当会话状态 mode 被设置为 InProc 时,才引发 End 事件。访问后服务器为此次回话生成唯一一个标识sessionId。SessionID 属性用于唯一地标识在服务器上包含会话数据的浏览器。 SessionID 值由 ASP.NET 随机生成,并存储在浏览器的不过期 Cookie 中。 每次向 ASP.NET 应用程序发送请求时, SessionID 值便被发送到 Cookie 中。当再次访问时浏览器带着SessionId和其他请求数据。在服务器端更具SessiId来检索存储的会话变量。
ASP.NET 会话状态支持若干用于会话数据的存储选项。
-
InProc 模式,此模式将会话状态存储在 Web 服务器上的内存中。 这是默认值。
-
StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
-
SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
-
Custom 模式,此模式允许您指定自定义存储提供程序。
-
Off 模式,此模式禁用会话状态。
设置session的值
Session["City"] = “city”
读取session的值
string city = (string)(Session["City"]);;
具体将session的值在服务器以何种方式存储依情况而定。