< meta http-equiv="description" content="ASP.NET中可以通过向客户程序发送唯一的Cookie来管理服务器上的Session对象。如果客户端浏览器关闭Cookie支持,则服务器端的Session功能也会失效。正是使用这种Cookie,服务器可以访问存储在服务器上的属于客户程序的信息。"/>

Asp.net内置对象之Session

[来源] 达内    [编辑] 达内   [时间]2013-03-06

ASP.NET中可以通过向客户程序发送唯一的Cookie来管理服务器上的Session对象。如果客户端浏览器关闭Cookie支持,则服务器端的Session功能也会失效。正是使用这种Cookie,服务器可以访问存储在服务器上的属于客户程序的信息。

  1.Session对象的基本概念

  Session英文意思是:“会话、开会”,这是很基础的了解啦。使用Session对象可以存储不同用户个人会话所需的信息。当用户在Web应用程序的程序之间跳转时,存储在Session的变量不会被清除,而始终存在,只要客户浏 器接入一个Web服务器,在服务器中就会创建一个具有该用户专用ID号的Session对象,在其中可以存放上线用户的私有变量信息,只要用户不下线,自己的Session变量存在;一旦用户下线,Session变量会消失。如果Web服务器停止了,Session变量也会消失。

  2.Session对象的工作机制

  ASP.NET中可以通过向客户程序发送唯一的Cookie来管理服务器上的Session对象。如果客户端浏览器关闭Cookie支持,则服务器端的Session功能也会失效。正是使用这种Cookie,服务器可以访问存储在服务器上的属于客户程序的信息。

  注意:会话状态仅在支持cookie的浏览器中保留,如果客户关闭了浏览器中的Cookie选项,Session也就不能发挥作用了。

  在ASP.NET中使用Session变量应该注意:

  (1).Session变量不用声明就可以使用

  (2).Session变量可以在Web应用程序的多个程序之间传送数据、但是跨越网站和Web应用程序则Session变量失效

  (3).为了防止服务器崩溃,应避免使用Session变量对象。尤其是包含大量数据的数据库对象,很容易使服务器崩溃

  Session对象是HttpSessionState类的一个实例,它有以下四个常用的属性

  二、Session对象的属性

  (1).SessionID

  (2).Timeout

  (3).Count

  (4).IsCookieless

  1.SessionID属性

  SessionID属性返回用户的会话标识

  在用户第一次访问网页创建会话时,服务器会产生一个相应的Session对象,该Session对象具有与其他会话不同的标识。该标识就是Session对象的SessionID属性。会话标识以长整数类型返回。

  在客户端,浏览器会将本次会话的SessionID值存入到本地的Cookie中,当再次向服务器提出页面请求时,该SessionID值将作为Cookie信息传送给服务器,服务器就可以根据该值找到此次会话以前在服务器上存储的信息。当重新开启一个页面的时候,该值都会变化,而且永远不会重复。

  实际上当不希望依赖于cookie时,可以将 webconfig 文件中的sessionState标签对应的cookieless的值改"true" ,此时sessionid被附加于url中

  2.Timeout属性

  Timeout属性设置应用程序会话状态的超时时限,以分钟为单位。

  每一个与Web服务器建立连接的客户端都拥有独立的会话进程,Web服务器管理这些进程时需要占用一定的系统资源。在现实生活中,有些用户在浏览网页的过程中,可能要去处理其他事件而没有关闭与服务器的连接。在这种情况下,如果服务器一直在管理与此相关的会话进程,就会造成系统资源的浪费。因此,当用户联机后,在一段时间内没有刷新或请求网页,就可以考虑结束会话进程。

  若要设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限,设置Session对象的Timeout属性即可。默认值为20min。Timeout属性以分钟为单位为该应用程序的Session对象指定超时时限。如果用户在该超时时限之内不刷新网页,则该会话将终止。设置Timeout属性的语法如下:

  Session.Timeout = nMinutes;

  参数nMinutes:指定会话空闲多少分钟后服务器自动终止该会话。默认值为20。

  下面的语句将设置Session的过期时间为30min。

  Session.Timeout = 30;

  3.Count属性

  Count属性设置Session对象包含的所有变量个数的总和。

  提示:

  除了内置的属性外,Session对象也可以像Application对象一样设置并使用自定义属性,这些自定义的Session对象属性实际上就是上线用户的私有变量。因此可以利用Session对象的变量在ASP.NET文件之间传送输值、字符串、数组和对象。

  1: Response.Write(Session.SessionID);//随机分配一个SessionID,每次重新打开都不一样如:4w5noyiwpnh0ztm0cymzlo1e

  2: Response.Write(Session.Timeout);//默认20分钟

  3: Response.Write(Session.Count);//设置Session对象包含的所有变量个数的总和。

资源下载