
正文
Cookie和Session(session过程和设置进程外session)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
cookie 和 session 的区别
cookie 是保存在客户端上的一种机制 而session 是保存在服务端的一种机制
cookie的理解:
打个简单的比方,一个人生病了去A医院看病,回来的时候医生给了病人一个病历本(相当于cookie) 那么下次病人去复查的时候 就要带着这个病例本队A医院,如果拿着这个病历本去了B医院 B医院肯定是不承认的(不能够跨域取cookie,比如a.com的cookie只能由a.com, x.a.com, y.a.com等站点读取,b.com则不可以)
cookie的保存机制分两种: 第一种是会话cookie 第二种是 持久cookie
会话cookie: 如果没有设置过期时间 那么cookie的生命周期就是当前浏览器的会话时间 当浏览器关闭之后 那么cookie就会失效 这种生命期为浏览会话期的cookie称之为会话cookie
持久cookie: cookie对象 上加上了Expries属性之后 就会将这个cookie保存在客户端的硬盘上在cookie为过期之前那么再次访问这个网站的时候会再次把cookie带过来
设置持久cookie
HttpCookie cookie=new HttpCookie(string,string);
cookie.Expires = DateTime.Now.AddDays(3);
context.response.cookies.Add(cookie);
取出设置的cookie的值
先判断context.request.cookies[string]!=null
string str=context.request.cookies[string].Value;
session的理解
1.0 session是存储在当前服务器的session池中 可以储存任何自定义的对象
2.0 当浏览器第一次访问的时候 会在session池中创建一个session 对象 同时产生一个sessionid 以set-cookie的形式发送给浏览器 浏览器将其保存在当前的进程中

3.0 当浏览器再次访问这个网站下的任何一个页面的时候 就会带上sessionid返回给服务器 在管道事件中的第9个和第10个事件之间进行赋值
判断当前页面是否有实现IRequiresSessionState 接口
从set-cookie 中取出sessionid 从服务器的session池中找到session对象
将session对象赋值给上下文的session属性
4.0 考虑到服务器的session池的容量有限 当储存的sessionde 数据过多 那么回导致session池的重启 然后session池里面的老数据就会丢失
考虑到进程内session的问题 可以使用进程外session 来解决






