ASP.NET中的Session状态

开发 后端
本文介绍ASP.NET中的Session状态,当使用一个Session状态时,一个名为ASP.NET_SessionId的cookie会自动添加到浏览器。这个cookie包含一个唯一的标识符,它可以在页面切换时跟踪用户。

和cookie不一样的是,Session状态没有大小限制。如果有极端的要求,可以使用Session保存上G的数据。并且Session可以保存更复杂的对象,例如可以在Session中保存一个DataSet。

当使用一个Session状态时,一个名为ASP.NET_SessionId的cookie会自动添加到浏览器。这个cookie包含一个唯一的标识符,它可以在页面切换时跟踪用户。

默认情况下,如果cookie被禁用了,Session状态也不能正常工作了。默认情况下,假设用户超过20分钟不请求任何页面,保存在Session状态中的数据会被丢弃。

ASP.NET使用Session对象

用户操作Session状态最主要的应用程序编程接口是HttpSessionState类。该对象被 Page.Session,Context.Session,UserControl.Session,WebService.Session和 Application.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状态中删除特定的项目;

ASP.NET提交会话事件

Global.asax中包含两个可以处理的关联Session状态的事件:Session Start和Session End事件。Session Start事件是在一个新会话开始时触发的,Session End事件在会话终止时被触发。

会话失效控制

默认情况下,20分钟内用户不请求页面,Session过期。可以在配置文件修改Session的过期时间:

  1. <?xml version="1.0"?> 
  2. <configuration> 
  3. <system.web> 
  4. <sessionState timeout="60" /> 
  5. </system.web> 
  6. </configuration> 

也可以用编程的方式来改变Session状态的过期时间
Session.Timeout = 60;

使用Cookieless的会话状态

默认情况下,Session状态依赖cookie。如果用户浏览器禁止了cookie,默认情况下Session状态就不能工作。这种情况下可以使用无cookie的会话,当启用无cookie的会话时,用户的会话ID就会添加到页面的URL中。

可以修改配置文件的sessionState元素,配置cookieless的值为AutoDetect。

  1. <?xml version="1.0"?> 
  2. <configuration> 
  3. <system.web> 
  4. <sessionState cookieless="AutoDetect" 
  5. regenerateExpiredSessionId="true" /> 
  6. </system.web> 
  7. </configuration> 

【编辑推荐】

  1. 介绍ASP.NET中SQL语句
  2. 在ASP.NET中使用StringBuilder
  3. ASP.NET中的Response.Write
  4. 浅析ASP.NET授权模块
  5. ASP.NET运行时的处理流程
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-07-24 10:41:00

ASP.NET Ses

2009-07-29 10:19:48

Session StaASP.NET

2009-07-28 16:57:50

ASP.NET Ses

2009-07-30 14:03:04

ASP.NET中的se

2009-08-03 10:07:20

ASP.NET Ses

2009-07-23 18:56:50

ASP.NET Ses

2009-07-28 16:03:23

ASP.NET状态服务

2009-07-28 11:09:02

ASP.NET状态类型

2009-08-05 18:30:36

Session和CooASP.NET表单

2009-07-24 10:41:00

ASP.NET Ses

2009-07-22 18:02:26

ASP.NET Ses

2009-07-31 18:16:09

ASP.NET中的Se

2009-07-23 16:28:55

2009-08-03 09:45:14

ASP.NET Ses

2009-08-05 17:39:13

ASP.NET常用状态

2009-07-24 10:10:22

ASP.NET

2009-07-24 16:17:42

WebRequestEASP.NET

2009-04-27 10:33:16

ASP.NET视图状态

2009-08-03 09:17:30

ASP.NET Ses

2009-07-20 14:32:08

点赞
收藏

51CTO技术栈公众号