ASP.NET2.0揭秘读书笔记六——使用会话状态Session
使用Session对象
HttpSessionState支持下面这些属性:
CookieMode——用来指定是否启用不依赖cookie的Session状态功能。
Count——用来获得Session状态中包含项的数量。
IsCookieless——用来指定是否启用不依赖cookie的Session状态功能。
IsNewSession——用来检测当前请求是否创建了新的用户会话;
IsReadOnly——是否只读;
Keys——用来获取保存在Session状态中项目的名称列表;
Mode——用来指定当前Session状态的存储处理程序。
SessionID——用来获得唯一的会话标识符;
Timeout——用来指定Web服务器假设用户离开并取消Session状态过期分钟数。最大为525600分钟(1年);
HttpSessionState对象还包含以下方法:
Abandon——用来终止一个用户会话;
Clear——用来清除Session状态中所有项目;
Remove——用来从Session状态中删除特定的项目;
提交会话事件
Global.asax中包含两个可以处理的关联Session状态的事件:Session Start和Session End事件。Session Start事件是在一个新会话开始时触发的,Session End事件在会话终止时被触发。
会话失效控制
默认情况下,20分钟内用户不请求页面,Session过期。可以在配置文件修改Session的过期时间:
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState timeout="60" />
</system.web>
</configuration>
也可以用编程的方式来改变Session状态的过期时间
Session.Timeout = 60;
使用Cookieless的会话状态
可以修改配置文件的sessionState元素,配置cookieless的值为AutoDetect。
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieless="AutoDetect"
regenerateExpiredSession
</system.web>
</configuration>
配置Session状态管理
默认情况下,Session状态被保存在ASP.NET所在的相同进程,这样就导致了进程内Session状态很脆弱以及进程内Session状态可伸缩性较差的缺点。
如果你要想使Session状态更健壮,ASP.NET Framework提供了多种方式。如可以修改Session状态模式配置ASP.NET Framewor把Session状态存储到另一个地方。
那么Session状态的模式有哪些值呢?
Off——禁用Session状态;
InProc——默认模式,即在ASP.NET所在的进程存储Session状态;
StateServer——存储Session状态到独立于ASP.NET进程的一个Windows NT进程;
SQLServer——存储Session状态到SQL Server数据库;
Custom——存储Session到自定义的位置;
如果你要想使Session状态更健壮,ASP.NET Framework提供了多种方式。如可以修改Session状态模式配置ASP.NET Framewor把Session状态存储到另一个地方。
那么Session状态的模式有哪些值呢?
Off——禁用Session状态;
InProc——默认模式,即在ASP.NET所在的进程存储Session状态;
StateServer——存储Session状态到独立于ASP.NET进程的一个Windows NT进程;
SQLServer——存储Session状态到SQL Server数据库;
Custom——存储Session到自定义的位置;