asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值
生活随笔
收集整理的這篇文章主要介紹了
asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 public class Cookies
2 {
3 /// <summary>
4 /// 添加cookie
5 /// </summary>
6 /// <param name="cookieName"></param>
7 /// <param name="value"></param>
8 public static void Add(string cookieName, string value)
9 {
10 HttpCookie cookie = new HttpCookie(HttpUtility.UrlEncode(cookieName), HttpUtility.UrlEncode(value));
11 HttpContext.Current.Response.AppendCookie(cookie);
12 }
13
14 /// <summary>
15 /// 給指定的cookie的指定鍵添加值
16 /// </summary>
17 /// <param name="cookieName">cookie的名稱</param>
18 /// <param name="keyName">要添加的鍵</param>
19 /// <param name="value">要添加的值</param>
20 public static void Add(string cookieName, string keyName, string value)
21 {
22 HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
23 //如果cookie=null則新建一個cookie
24 if (cookie == null)
25 cookie = new HttpCookie(HttpUtility.UrlEncode(cookieName));
26 //如果該鍵不存在,則新建一個鍵值并賦值;否則直接賦值
27 if (string.IsNullOrEmpty(cookie.Values[keyName]))
28 cookie.Values.Add(keyName, HttpUtility.UrlEncode(value));
29 else
30 cookie.Values[keyName] = HttpUtility.UrlEncode(value);
31
32 HttpContext.Current.Response.AppendCookie(cookie);
33 }
34
35 /// <summary>
36 /// 讀取Cookie
37 /// </summary>
38 /// <param name="key"></param>
39 /// <returns></returns>
40 public static string GetValue(string cookieName)
41 {
42 string value = HttpContext.Current.Request.Cookies[HttpUtility.UrlEncode(cookieName)].Value;
43 return string.IsNullOrEmpty(value) ? string.Empty : HttpUtility.UrlDecode(value);
44 }
45
46 /// <summary>
47 /// 讀取指定Cookie里的指定鍵的值
48 /// </summary>
49 /// <param name="cookieName">cookie名稱</param>
50 /// <param name="keyName">cookie的鍵</param>
51 /// <returns></returns>
52 public static string GetValue(string cookieName, string keyName)
53 {
54 HttpCookie cookie = HttpContext.Current.Request.Cookies[HttpUtility.UrlEncode(cookieName)];
55 if (cookie == null)
56 return string.Empty;
57 string value = cookie.Values[HttpUtility.UrlEncode(keyName)];
58 return string.IsNullOrEmpty(value) ? string.Empty : HttpUtility.UrlDecode(value);
59 }
60
61 /// <summary>
62 /// 獲取指定cookie中所有的鍵
63 /// </summary>
64 /// <param name="cookieName"></param>
65 /// <returns></returns>
66 public static string[] GetValues(string cookieName)
67 {
68 if (HttpContext.Current.Request.Cookies[cookieName] == null)
69 return new string[0];
70 string[] keys = HttpContext.Current.Request.Cookies[cookieName].Values.AllKeys;
71 for (int i = 0; i < keys.Length; i++)
72 {
73 keys[i] = HttpUtility.UrlDecode(keys[i]);
74 }
75 return keys;
76 }
77
78 /// <summary>
79 /// 移除指定的Cookie
80 /// </summary>
81 /// <param name="cookieName"></param>
82 public static void Remove(string cookieName)
83 {
84 HttpContext.Current.Response.Cookies.Remove(HttpUtility.UrlEncode(cookieName));
85 HttpContext.Current.Response.Cookies[HttpUtility.UrlEncode(cookieName)].Expires = DateTime.Now.AddDays(-1);
86 }
87 /// <summary>
88 /// 移除cookie中指定的鍵,若是最后一個鍵則移除這個cookie
89 /// </summary>
90 /// <param name="cookieName"></param>
91 /// <param name="keyName"></param>
92 public static void Remove(string cookieName, string keyName)
93 {
94 HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
95 if (cookie != null)
96 {
97 if (cookie.Values.Count > 0)
98 {
99 if (cookie.Values.Count == 1)
100 {
101 //若是最后一個鍵則移除這個cookie,否則會多出一個空值
102 cookie.Values.Remove(HttpUtility.UrlEncode(keyName));
103 cookie.Expires = DateTime.Now.AddDays(-1);
104 }
105 else
106 {
107 cookie.Values.Remove(HttpUtility.UrlEncode(keyName));
108 }
109 HttpContext.Current.Response.Cookies.Add(cookie);
110 }
111 }
112 }
113 }
首先要了解Cookie是存在客戶端的。
添加cookie是向客戶端添加cookie,所以要用(Response)HttpContext.Current.Response.AppendCookie(cookie);
獲取cookie是獲取客戶端提交上來的cookie,所以要用(Request)HttpContext.Current.Request.Cookies[cookieName];
服務器端沒有權限刪除客戶端上的文件,所以服務器端,不能刪除cookie。但可以讓瀏覽器刪除,即讓cookie過期。
關于cookie讀取中文cookie時出現亂碼:存儲中文時要進行編碼,讀取中文時則進行解碼,這樣可以避免出現亂碼。
cookie中存儲數據的格式是以值鍵對的形式存儲的:即 key1=value1&key2=value2;
所以
1 cookie.Values.Add(key1, value1); 2 和 3 cookie.Value=cookie.Value+"&key1=value1" 4 是等同的。但是后者在Request.Cookies[cookieName].Values.Count時則會變成1。 5 可能是加上新值之后編碼不一所以count的時候變成了1?
轉載于:https://www.cnblogs.com/a-dou/articles/5310693.html
總結
以上是生活随笔為你收集整理的asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB拟合优度检验
- 下一篇: centos安装python3.5和pi