您的位置:首页 > 其它

Session

2015-10-30 01:36 211 查看
Session对象时System.Web.HttpSessionState类的实例,用于存储特定的信息,但是它和Application对象在存储信息所使用的对象时完全不同的。
Application :对象存储的是共享信息。
Session :存储的信息是局部的,是随用户不同而同的。
如果只需要在不同页面中共享数据,而不是需要在不同的客户端之间共享数据,就可以使用Session对象。
Session的生命周期是有限的(默认值为20分钟),可以使用TimeOut属性进行设置。在Session的生命周期内,Session的值是有效的。如果用户在大于生命周期的时间里没有再访问应用程序,Session就会自动过期,Session对象将会被CLR释放,其中保存的数据信息也将丢失。

CodePage : 获得或设置字符集标识。
Contents : 获得当前Session状态对象的引用。
CookieMode : 获得当前的Cookie,以确定系统是否要将Session配置为不需要Cookie支持。
Count : Session 状态集合的总数。
IsCookieLess : 是否需要Cookie支持,如果需要就可以将SessionID保存在Cookie中,如果不需要就必须嵌入在URL中。
IsNewSession : 标志当前Session是否是新的Session。
IsReadyOnly : 是否只读。
IsSynchronized : 是否同步。
Item : 通过索引获得或者设置单个Session值。
Keys : 获得Session集合的所有键。
LCID : 获得和设置当前Session的本地标识符。
Mode : 获得当前的Session模式。
SessionID : 获得Session的唯一编号,为了区别不同的会话,系统会为每一个会话分配一个唯一的ID。
StaticObjects : 获得在Global.asax中以
   <object Runat="Server" Scope="Session"/> 声明对象集合
Timeout : 获得和设置会话超时时间,如果客户端在连续一个时间段内没有反应,就自动清除会话,断开连接,Timeout就是这个时间。
Add : 添加一个新对象到HttpApplicationState集合。
Clear : 清除HttpApplication集合中的所有对象。
Get : 通过索引和名字获得HttpApplicationState对象。
Abandon : 清除当前会话。
Copyto : 复制Session 状态集合到一个一维数组。
Remove : 从HttpApplicationState 集合删除一个对象。
RemoveAll : 删除HttpApplicationState集合中的所有对象。
RemoveAt : 根据索引删除一个HttpApplicationState对象。

1、会话状态。
2、每个用户(浏览器实例)一份。
3、当用户访问WEB服务器,则被分配一个SessionID。
4、会话结束或超时,自动释放。
5、没有存储类限制(object)。
6、存储大小只受内存限制。
7、SessionID 第一次访问服务器后获取,并存储在本地Cookie中Session的值存储在服务器的内存中(默认方式)。
8、Cookie被禁用,Session也不能适应(默认方式)

Session存储机制

SessionID:24个字符串组成的随机字符串Session实际内容
Cookie (默认)
如果客户禁用Cookie,那么Session也失效
InProc(默认)内存
Web服务器的内存
URL不能使用绝对链接StateServer
独立的Windows服务进程中
SqlServer
SqlServer 服务器的数据表中
创建一个Session的Key(与修改相同)
Session["KeyName"]=……;
Session.Add("KeyName",objectValue);
赋值的内容可以使任何类型,String、Int、Boolean各种类型、数组、控件等。

Add方法创建Session时,没有的新建,有的则覆盖。

获取一个Session :
1、存储字符串:String str_ss=Session["ss_str"].toString();
2、存储数值 : Int i_ss=(Int)Session["ss_int"];
3、如果存储的是一个控件:
TextBox txt_ss=(TextBox)Session["ss_txt"];

清除Session :
1、清除一个Session的程序语句:
Session.Remove("KeyName");
2、清除所有Application的程序语句:
Application.Abandon();

注意:
如果是在按钮中清除Session,那么有页面生命周期知道:
PageLoad事件中仍能读取到清除之前的Session的值,如果想得到清除之后的值,我们现在最简单的办法是清楚后,再一次获取页面Response.redict(当前URL)。

如何获取当前的URL:
Request.Url.LoadPath.toString();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息