关闭

ASP.NET 下的Cookie和Session 简单介绍与操作

标签: cookiesessionasp.net
130人阅读 评论(0) 收藏 举报
cookie
    1、cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘
    2、cookie只能能够存储少量文本,大概4K大小
    3、cookie是不能在不同浏览器之间共享
 
复制代码
 1 添加Cookie
 2 //1.0 在服务器端实例化cookie对象
 3 
 4 HttpCookie cookie = new HttpCookie("name", name);
 5 
 6 //2.0  设置cookie在浏览器端有效时间为2分钟,注意:此时浏览器就会将cookie存入到其所在的硬盘(等待时间到期以后才消失)
 7 
 8 cookie.Expires = DateTime.Now.AddSeconds(120);
 9 
10 //3.0 Path ="/" 表示当前浏览器请求此网站的任何页面都会将有效cookie传入给服务器
11 
12 cookie.Path = "/01cookie/"; //指定当前cookie只有在浏览器访问01cookie文件下下的所有页面才传入服务器
13 
14 //4.0  设置Domain 表示当前cookie只有在当前设置好的域名下才有效
15 
16     //注意:如果没有指定Domain 的情况下,asp.net会智能的读取当前url中的主机
17 
18     //实现单点登录的简单方式可以设置cookie的Domain 为顶级域名
19 
20     //顶级域名 .baidu.com
21 
22     //二级域名:www.baidu.com,zhidao.baidu.com  mp3.baidu.com
23 
24     //三级域名:zhidao.s1.baidu.com ,但是一般只是用到二级域名,三级域名对于网站的seo优化回不明显
25 
26     //单点登录:实现一次登录以后再当前域名下面的其他站点可以实现免登录
27 
28 cookie.Domain = ".c12.com"; //将cookie的Domain设置成顶级域名以后再其所有的二级域名下的网站都可以共享此cookie
29 
30 //5.0 通过Response.Cookies 将cookie对象发送给浏览器保存
31 
32 Response.Cookies.Add(cookie); //底层就是向相应报文头中 添加指令 set-cookie:name = admin;Expires UTC时间
复制代码

 

 获取Cookie的值:

复制代码
if (Request.Cookies["name"] == null)

{

    Response.Write("<script>alert('登录状态已经失效,请重新登录');window.location='login.aspx'</script>");

}
复制代码

 

删除Cookie:

复制代码
//清除cookie思路,一定是将cookie的过期时间设置为当前时间以前的某个时间点

//清除 path=/下的并且doamin曲子url主机的cookie

HttpCookie cookie = new HttpCookie("name", "");

cookie.Expires = DateTime.Now.AddYears(-1);

//表示清除path=/01cookie/的cookie

cookie.Path = "/01cookie/";

Response.Cookies.Add(cookie); //set-cookie :Expires:2013-4-11
复制代码

 


 



Session:

     1、存在服务器端,存在网站进程的内存中

     2、在初次设置session的时候,会在session池中实例化一个session对象,以asp.net_sessionid 的值作为key,同时会将key以cookie的形式

 保存到客户端的内存中

     3、session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的session对象要20分钟以后才会回收

     4、在web.config中的 <system.web> 节点下添加 <sessionState timeout="5" cookieless="true"></sessionState> 手动修改session的相关设置

注意点:

aspx编译完成以后会自动实现接口IRequiresSessionState,所以能够直接使用session

但是一般处理程序,需要程序员自己实现接口IRequiresSessionState ,才能够使用session对象

如果浏览器禁用了cookie,则可以使用

设置:<sessionState cookieless="true"></sessionState> 来开启url传入sessionid到服务器,但是不推荐使用

 

添加Session:

//将当前name的值存入session中

context.Session["name"] = name;

获取Cookie:

(string)Session["name"]

 

删除Cookie:

//负责清除session

context.Session["name"] = null;

context.Session.Abandon();    取消当前会话

在一般处理程序中要使用session  要实现System.Web.SessionState.IRequiresSessionState接口

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10498次
    • 积分:145
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:21篇
    • 译文:0篇
    • 评论:0条
    文章存档