Session

20050501
1、什么是Session
Session是另一种记录客户状态的机制.当某一客户端浏览器访问服务器的时候,服务器可以通过创建session来记录客户端状态,并返回一个cookie(里面保存有sessionid)到客户端浏览器

2、Session的作用
客户端浏览器再次访问服务器时会带上存有sessionid的cookie,通过sessionid来访问该客户在服务器上所创建的session对象。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要通过sessionid查询所属客户档案就可以了。
每个来访者对应一个Session对象,所有该客户的状态信息都保存在这个Session对象里。Session对象是在客户端第一次请求服务器的时候创建的。Session也是一种key-value的属性对

3、使用Session注意事项
Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。

由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为sessionid的Cookie,Session依据该Cookie的sessionid来识别是否为同一用户。该Cookie为服务器自动生成的,它的maxAge属性一般为–1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。
因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。就需啊另一种解决方案:URL地址重写。

namespace WebApplication1
{

    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CreatSession();
            string user = Session["user"].ToString();
            List<Student> students = Session["students"] as List<Student>;
        }
        public  void CreatSession()
        {
            
            Session["user"] = "MySession";

            List<Student> students = new List<Student>();           

            Student student1 = new Student
            {
                Name = "xiao-wu", Age = 15
            };
            Student student2 = new Student
            {
                Name = "tang-san",
                Age = 16
            };

            students.Add(student1);
            students.Add(student2);

            Session["students"] = students;
        }
    }
    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }

    }
}

在服务器某页面有创建session时,客户端浏览器访问该页面服务器会生成一个cookie(里面存储的是sessionid)保存在浏览器,每当客户端浏览器向服务器发送请求时都会带上该cookie, 从而该客户可以访问在服务器创建的所有session. session是可以跨页面访问的,viewstate不可以跨页面访问 session默认过期时间为20分钟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值