C#使用Cookie方法

 1 代码
 2 
 3 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> //写入
 4   protected void Button1_Click(object sender, EventArgs e)
 5   {
 6     HttpCookie cookie=new HttpCookie("MyCook");//初使化并设置Cookie的名称
 7     DateTime dt=DateTime.Now;
 8     TimeSpan ts = new TimeSpan(0, 0, 1,0,0);//过期时间为1分钟
 9     cookie.Expires = dt.Add(ts);//设置过期时间
10     cookie.Values.Add("userid", "userid_value");
11     cookie.Values.Add("userid2","userid2_value2");
12     Response.AppendCookie(cookie);
13     //输出该Cookie的所有内容
14     //Response.Write(cookie.Value);//输出为:userid=userid_value&userid2=userid2_value2 
15   }
16 
17   //读取
18   protected void Button2_Click(object sender, EventArgs e)
19   {
20 
21     // HttpCookie cokie = new HttpCookie("MyCook");//初使化
22     if (Request.Cookies["MyCook"]!=null)
23     {
24       //Response.Write("Cookie中键值为userid的值:" + Request.Cookies["MyCook"]["userid"]);//整行
25       //Response.Write("Cookie中键值为userid2的值" + Request.Cookies["MyCook"]["userid2"]);
26       Response.Write(Request.Cookies["MyCook"].Value);//输出全部的值
27     }
28   }
29 
30   //修改Cookie
31   protected void Button3_Click(object sender, EventArgs e)
32   {
33     //获取客户端的Cookie对象
34     HttpCookie cok = Request.Cookies["MyCook"];
35         
36     if (cok != null)
37     {
38       //修改Cookie的两种方法
39       cok.Values["userid"] = "alter-value";
40       cok.Values.Set("userid", "alter-value");
41 
42       //往Cookie里加入新的内容
43       cok.Values.Set("newid", "newValue");
44       Response.AppendCookie(cok);
45     }      
46   }
47 
48   //删除Cookie
49   protected void Button4_Click(object sender, EventArgs e)
50   {
51 
52     HttpCookie cok = Request.Cookies["MyCook"];
53     if (cok != null)
54     {
55       if (!CheckBox1.Checked)
56       {
57         cok.Values.Remove("userid");//移除键值为userid的值
58       }
59       else
60       {
61         TimeSpan ts = new TimeSpan(-1, 0, 0, 0);
62         cok.Expires = DateTime.Now.Add(ts);//删除整个Cookie,只要把过期时间设置为现在
63       }
64       Response.AppendCookie(cok);
65     }
66   }
C#使用Cookie方法

 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的

 1 转:http://www.cnblogs.com/henryhappier/archive/2011/03/03/1969564.html
 2 今天在测试Ticket时,发现原来保存的Cookie莫名其妙的就被清除了,自己没有做过任何的改动。经开发人员Allon推断,应该是Cookie数量达到了浏览器的限制。
 3 
 4 网上查找出来的结果是:
 5 
 6  
 7 
 8  
 9 
10 一、浏览器允许每个域名所包含的cookie数:
11 
12   Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
13 
14   Firefox每个域名cookie限制为50个。
15 
16   Opera每个域名cookie限制为30个。
17 
18   Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
19 
20   注:“每个域名cookie限制为20个”将不再正确!
21 
22 二、当很多的cookie被设置,浏览器如何去响应。
23 
24   除Safari(可以设置全部cookie,不管数量多少),有两个方法:
25 
26   最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。
27 
28   Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
29 
30 三、不同浏览器间cookie总大小也不同:
31 
32   Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
33 
34   Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
35 
36   Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
37 
38       注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
各浏览器Cookie大小、个数限制
cookie的发送与传输方式:通过响应报文与请求报文进行发送与响应
Cookie分类:
根椐Cookie的生存周期进行cookie分类:缓存cookie(也称:会话cookie)、硬盘cookie
缓存cookie(也称:会话cookie):若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。
硬盘cookie:若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。如:
{
            HttpCookie cookie=new HttpCookie("MyCook");//初使化并设置Cookie的名称
    DateTime dt=DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 1,0,0);//过期时间为1分钟
    cookie.Expires = dt.Add(ts);//设置过期时间
}

posted on 2015-04-27 21:15  高达  阅读(690)  评论(0)    收藏  举报

导航