关于cookie和session
cookie
1:一个cookie中可以存放的数据最大在4KB左右
2:cookie存放于客户端
3:cookie分为两种 一种是会话cookie 一种是持久cookie
会话cookie: 是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了
持久cookie: 存储在硬盘上,(不管浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过期时间
session:
1:session存放于服务器端的内存中 session池
2:浏览器第一次访问seesion的死后给其赋值 那么session池中创建一个session对象 ,同时产生一个sessionId 以set-cookie 的形式返回给浏览器 ,浏览器将session保存其进程内存中
3:浏览器下次访问当前网站的任意页面时都会将sessionid发送给服务器 服务器在asp.net处理机制的第9个事件 和第10个事件
9,10个事件中的步骤:
a:判断当前页面是否有实现IRequiresSessionState接口
b:从cookie中获取sessionid从服务器的ssesion池中找到session对象
c:将session对象赋值给上下文的seesion属性
4:进程内session的缺点
a:当网站访问量过大的时候 会导致session池重启 然后session池中的session对象就会丢失了
5.0进程外session
a: 状态服务器(优点:速度快,缺点:也是不稳定)
b: 数据库(优点:比较稳定,缺点:每次访问sesion 都要访问db 频繁打开和关闭ado.net 也是比较消耗性能的)
关于cookie的用法
赋值:
单个的形式:
HttpContext.Current.Response.Cookies["Email"].Value="soaeon@163.com";
HttpContext.Current.Response.Cookies["key"].Value="soaeon";
以对象的形式来赋值:
HttpCookie cookie =new HttpCookie("tempMsg");
cookie.Values["Email"] = "soaeon@163.com";
cookie.Values["key"] = "soaeon" ;
cookie.Domain = "soaeon.com"; //设置当前cookie所属于的域
cookie.Expires = (DateTime)expiresTime //设置cookie的过期时间(持久cookie)
System.Web.HttpContext.Current.Response.Cookies.Set(cookie);
取值:
System.Web.HttpContext.Current.Request.Cookies["Email"].Value;
System.Web.HttpContext.Current.Request.Cookies["key"].Value;
或者:
HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["tempMsg"];
string email = cookie.Values["Email"];
string key = cookie.Values["key"];
关于session的用法
赋值 Session["name"] = "soaeon@163.com";
取值
if (Session["name"] != null)
{
string str = Session["name"].ToString();
}