微软对HttpCookie的定义为“提供创建和操作各 HTTP Cookie 的类型安全方法。”

HttpCookie的构造函数一共有两个 1.HttpCookie(String)  //直接定义 2.HttpCookie(String, String) //定义并赋值

感觉第一个用的比较常见,因为使用HttpCookie定义cookie对象,往往只是操作对象中的键值对。如果只是定义简单的cookie,可以直接使用response操作

一、HttpCookie使用示例:

1.写cookie

//定义cookie对象
HttpCookie cookie = new HttpCookie("person");
//属性为“会员”
cookie.Value = "会员";
//过期时间为1小时
cookie.Expires = DateTime.Now.Add(new TimeSpan(0,1,0,0));
//可以设置cookie的访问目录和域名
//cookie.Path = "";
//cookie.Domain = "";
//以下是定义的键值对。
cookie.Values.Add("name","张三");
cookie.Values.Add("age","20");
//添加到响应体中,不能缺少
Response.Cookies.Add(cookie);  
//Response.AppendCookie(cookie); /用于追加操作
2.读取cookie
//从请求体中过去cookie对象
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{    
//读取全部 会员&name=张三&age=20
    Response.Write(cookie.Value+"<br/>"); 
    Response.Write(cookie.Values["name"]+"<br/>");  //张三    
Response.Write(cookie["name"]);
 //张三 }
else {
    Response.Write("不存在");
}

3.删除cookie,因为我们操作的是cookie对象,所以删除可以分为全部删除,即删除person。或只删除cookie对象中的键

a.删除cookie对象中的键

HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{    
cookie.Values.Remove("name");
    //Response.AppendCookie(cookie);  
  Response.Cookies.Add(cookie);
}
b.删除整个cookie,设置cookie日期过期
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null)
{
    cookie.Expires = DateTime.Now.Add(new TimeSpan(0, -3, 0, 0));
    Response.Cookies.Add(cookie);
}
二、我对HttpCookie与Response.Cookies、Request.Cookies的理解

Response(HttpResponse)与Request(HttpRequest)使用System.Web.HttpCookieCollection响应cookie集合,通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。 通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie,这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 并且通过Response,Request我们可以直接操作cookie。

而HttpCookie更面向于对象,我们在操作cookie时,是在操作一个对象。我们要响应cookie也必须使用Response与Request。因为我们写cookie时要用到: Response.Cookies.Add(cookie); 而读取时: Request.Cookies.Get(“person”);

而独立于Response的HttpCookie对象无法设置成功,独立于Request的HttpCookie对象始终为null。

HttpCookie只是方便我们操作cookie,并且更加的面向对象。

三、HttpCookie与Response.Cookies,Request.Cookies的互操作

HttpCookie与Response.Cookies,Request.Cookies的互操作是完全可行的。
不管是用哪个写用哪个读都是可行的。例如:
1.HttpCookie写,Request读

//写 cookie HttpCookie cookie = new HttpCookie("person");
cookie.Values.Add("name","张三");
//读取
Response.Write(Request.Cookies["person"]["name"]);
//response写
Response.Cookies["person"]["name"]="lisi";
Response.Cookies["person"]["age"] = "20";
2.Response写,HttpCookie读
//读取
HttpCookie cookie = Request.Cookies.Get("person");
if(cookie!=null) {
    Response.Write(cookie.Value+"<br/>");  //读取全部 会员&name=张三&age=20    
Response.Write(cookie.Values["name"]+"<br/>");  //张三    
Response.Write(cookie["name"]);  //张三
}
else {
    Response.Write("不存在");
}
 
原创文章,转载请注明: 转载自沉默的小丑

asp.net中HttpCookie操作cookie的方法的更多相关文章

  1. Python3 WebDriver操作cookie的方法

    Python3 WebDriver操作cookie的方法 WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get ...

  2. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

  3. ASP.NET中XML转JSON的方法

    原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...

  4. C# Asp.net中简单操作MongoDB数据库(二)

    C# Asp.net中简单操作MongoDB数据库(一)    , mongodb数据库连接可以回顾上面的篇幅. 1.model类: public class BaseEntity { /// < ...

  5. C# Asp.net中简单操作MongoDB数据库(一)

    需要引用MongoDB.Driver.dll.MongoDB.Driver.core.dll.MongoDB.Bson.dll三个dll. 1.数据库连接: public class MongoDb ...

  6. vue 中 直接操作 cookie 及 如何使用工具 js-cookie

    转载:https://www.cnblogs.com/xiangsj/p/9030648.html vue 中直接操作 cookie 以下3种操作方式 set: function (name, val ...

  7. python中文件操作的其他方法

    前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...

  8. Asp.net 中ViewState,cookie,session,application,cache的比较

    Asp.net 中的状态管理维护包含ViewState,cookie,session,application,cache五种方式,以下是它们的一些比较: 1.存在于客户端还是服务端 客户端: view ...

  9. 慎重Asp.net中static变量的使用方法

    在.Net平台下进行CS软件开发时,我们常常遇到以后还要用到某些变量上次改动后的值,为了简单起见,非常多人都习惯用static来定义这些变量,我也是.这样非常方便.下一次调用某个函数时该变量仍然保存的 ...

随机推荐

  1. css 弹性盒子--“垂直居中”--兼容写法

    使用弹性盒子兼容低端适配有时需要: display:flex 和 display:-webkit-box   display: -webkit-box; -webkit-box-align: cent ...

  2. GDP区域分布图的生成与对比(ArcPy实现)

    一.背景 各地区经济协调发展是保证国民经济健康持续稳定增长的关键.GDP是反映各地区经济发展状况的重要指标.科学准确分析各地区GDP空间分布特征,对制定有效措施,指导经济协调发展具有重要参考价值. 二 ...

  3. 题解 51nod 1597 有限背包计数问题

    题目传送门 题目大意 给出 \(n\),第 \(i\) 个数有 \(i\) 个,问凑出 \(n\) 的方案数. \(n\le 10^5\) 思路 呜呜呜,傻掉了... 首先想到根号分治,分别考虑 \( ...

  4. rocketmq高可用集群部署(RocketMQ-on-DLedger Group)

    rocketmq高可用集群部署(RocketMQ-on-DLedger Group) rocketmq部署架构 rocketmq部署架构非常多,都是为了解决一些问题,越来越高可用,越来越复杂. 单ma ...

  5. Mybatis 一对多延迟加载,并且子查询中与主表字段不对应 (19)

    Mybatis  一对多延迟加载,并且子查询中与主表字段不对应应用说明. 实现一对多关联(懒加载),一个教研组对应多个教师,既:教师的教研编号与教研组的教研编号关联,并且教师关联教研组外键与教研组编号 ...

  6. Hash窃取与传递

    Hash窃取与传递 NTHASH(NTLM) 在 Windows中, 存储的密码Hash就叫做 NTHash,也叫做 NTLM,其中NTLM 全称是 "NT LAN Manager" ...

  7. logging的基本使用

    logging模块打印log的时候主要有一下几个,级别顺序:CRITICAL>ERROR>WARNING>INFO>DEBUG: 1.日志输出到file: import log ...

  8. 【机器学习基础】逻辑回归——LogisticRegression

    LR算法作为一种比较经典的分类算法,在实际应用和面试中经常受到青睐,虽然在理论方面不是特别复杂,但LR所牵涉的知识点还是比较多的,同时与概率生成模型.神经网络都有着一定的联系,本节就针对这一算法及其所 ...

  9. FastAPI 学习之路(四十二)定制返回Response

    我们想要在接口中返回xml格式的内容,我们应该如何实现呢. from fastapi import FastAPI,Response @app.get("/legacy/") de ...

  10. 【UE4 设计模式】单例模式 Singleton Pattern

    概述 描述 保证一个类只有一个实例 提供一个访问该实例的全局节点,可以视为一个全局变量 仅在首次请求单例对象时对其进行初始化. 套路 将默认构造函数设为私有, 防止其他对象使用单例类的 new运算符. ...