Web--->>>Cookie与Session

8/10/2015来源:ASP.NET技巧人气:1242

Web--->>>Cookie与session

1、cookie1、cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上2、cookie只能能够存储少量文本,大概4K大小3、cookie是不能在不同浏览器之间共享

3、创建cookie对象的写法演示 //3.0 实例化cookie对象HttpCookie cookie = new HttpCookie("uid", uid);// 告诉浏览器只有请求指定了路径下的页面 才将cookie发送给服务器,如果未指定默认就是 /cookie.Path = "/P01cookiedemo/";

// 设置了Expires 参数则表示告诉浏览器将cookie存入硬盘中,cookie.Expires = DateTime.Now.AddDays(3);

//设置了Domain,告诉浏览器只有请求www.c11.com 域名下的页面才将cookie发送给服务器cookie.Domain = "www.c11.com";

//4.0 将cookie添加到响应报文头中发送回浏览器保存,Response.Cookies.Add(cookie);4、获取浏览器通过请求报文头 发送给服务器的cookie 值的 写法,uid:为cookie的键,可以由程序员自己定义if(Request.Cookies["uid"]!=null){Request.Cookies["uid"].Value;}5、清除cookie 代码写法:HttpCookie cookie = Request.Cookies["uid"]; cookie.Expires = DateTime.Now.AddYears(-1); cookie.Path = "/P01cookiedemo/";

Response.Cookies.Add(cookie);5、单点登录2、GMT,UTC时间 零时区的时间,东区 + 小时 西区:-小时linux系统默认的时间就是UTC时间

3、Session1、存在服务器端,存在网站进程的内存中2、在初次设置session的时候,会在session池中实例化一个session对象,以asp.net_sessionid 的值作为key,同时会将key以cookie的形式保存到客户端的内存中3、session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的session对象要20分钟以后才会回收

清除Session:context.Session[“name”]=null;context.Session.Abandon();

4、在web.config中的 <system.web> 节点下添加 <sessionState timeout="5" cookieless="true"></sessionState> 手动修改session的相关设置注意点:aspx编译完成以后会自动实现接口IRequiresSessionState,所以能够直接使用session但是一般处理程序,需要程序员自己手动实现system.Web.SessionState.IRequiresSessionState接口 ,才能够使用session对象

如果浏览器禁用了cookie,则可以使用设置:<sessionState cookieless="true"></sessionState> 来开启url传入sessionid到服务器,但是不推荐使用