cookie是一小段的文本信息(多数浏览器限制cookie最大字节数为4096字节),在浏览器和服务器之间随用户请求而传递(用户访问网站,没有设置cookie限制范围情况下,无论请求那个页面,浏览器和服务器之间都会交换cookie信息)。Cookie是asp.ent实现状态管理的一种方法。

单值Cookie的读写:

Cookie有两种写入的方法:

方法一:直接写入

 Response.Cookies["MyCookieName"].Value = "MyCookieVal";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddYears();

方法二:创建cookie对象,将其加入到Cookie集合中去

HttpCookie mycookie = new HttpCookie("MyCookieName");
mycookie.Value = "MyCookieVal";
mycookie.Expires = DateTime.Now.AddYears();
Response.Cookies.Add(mycookie);

Cookie的读取:(读取时一定要判断是否存在,否则会抛出NullReferenceException异常)

        if (Request.Cookies["MyCookieName"] != null)
{
string cookieVale = Response.Cookies["MyCookieName"].Value;
} if (Request.Cookies["MyCookieName"] != null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];
string cookieValue = cookie.Value;
}

多值Cookie的读写:

写入方法一:直接写入

            Response.Cookies["MyCookieName"]["key1"] = "value1";
Response.Cookies["MyCookieName"]["key2"] = "value2";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();

  写入方法二:创建cookie对象,将其加入到Cookie集合中去

            HttpCookie cookie = new HttpCookie("MyCookieName");
cookie.Values["key1"] = "value1";
cookie.Values["key2"] = "value2";
Response.Cookies.Add(cookie);

读取方法一:根据cookie名和键读取

        if (Request.Cookies["MyCookieName"] != null)
{
string cookieVale = Response.Cookies["MyCookieName"]["key1"];
string cookieValue2 = Response.Cookies["MyCookieName"]["key2"];
}

读取方法二:循环读取

if (Request.Cookies["MyCookieName"] != null)
        {
            HttpCookie cookie = Request.Cookies["MyCookieName"];
            if (cookie.HasKeys)
            {
                for (int i = 0; i < cookie.Values.Count; i++)
                {
                    string key=cookie.Values.GetKey(i);
                    string value = cookie.Values[i];
                }
            }
            else
            {
                string value = cookie.Value;
            }
        }

Cookie的范围控制

Cookie的范围控制涉及到两个属性:PathDomain

1.Path 设置Path属性可以使Cookie只允许指定的路劲或者应用程序来访问。

        Response.Cookies["MyCookieName"].Value = "val";
Response.Cookies["MyCookieName"].Path = "/test";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();

经过Path设置后 只有该网站的test目录下的页面以及该文件夹下的所有页面可以访问该cookie.比如:www.ssss.com/test/ddd.aspx

2.Domain 设置Domain属后只有指定域可以访问cookie

        Response.Cookies["MyCookieName"].Value = "val";
Response.Cookies["MyCookieName"].Domain = "help.test.com";
Response.Cookies["MyCookieName"].Expires = DateTime.Now.AddDays();

代码中设置cookie的域为"help.test.com",这样,只有类似“help.test.com/dd.aspx”等的页面才能访问cookie,如“support.test.com/ddd.aspx”就不能访问该Cookie了。

Cookie的删除

删除Cookie十分简单,只要把要删除的Cookie的过期时间设置为过期的时间就行

if (Request.Cookies["MyCookieName"]!=null)
        {
            HttpCookie cookie = Request.Cookies["MyCookieName"];//获取要删除的cookie
            cookie.Expires = DateTime.Now.AddDays(-1); //设置过期时间
            Response.Cookies.Add(cookie);
        }

删除多值Cookie的某个键值

       if (Request.Cookies["MyCookieName"]!=null)
{
HttpCookie cookie = Request.Cookies["MyCookieName"];//获取cookie
cookie.Values.Remove("key1"); //删除key1
cookie.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(cookie);
}

关于Expires

Expires是Cookie的过期时间,如果将时间设置为大于当前时间,则Cookie会保存到本地的硬盘上,如果设置时间小于当前时间,则Cookie会从本地硬盘删除,不设置过期时间,服务器依旧会向客户端读写Cookie,但是不会将Cookie保存到本地硬盘。

ASP.NET常用技术之Cookie的更多相关文章

  1. ASP.NET常用技术之加密解密

    在开发项目中有许多数据需要我们进行加密解密操作,这里介绍几个加密解密的方法. 一:MD5加密 MD5加密是一种单向的加密算法,它只能加密,加密后不能进行逆向解密操作,常用于数字签名和加密用户密码. 下 ...

  2. ASP.NET常用内置对象

    ASP.NET 常用内置对象:Response对象.Request对象.Session对象.Server对象.Application对象 1.Response对象: (1) 用于向浏览器输出信息 常用 ...

  3. (摘录)26个ASP.NET常用性能优化方法

    数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...

  4. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...

  5. 26个ASP.NET常用性能优化方法

    数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...

  6. Servle第四篇(会话技术之cookie)

    会话技术 什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使 ...

  7. Struts 2 常用技术

    目录  Struts 2 常用技术  1. 常用类和接口  1.1 getter 和 setter 方法  1.2 Action 接口  1.3 ActionSupport 类  1.4 通过 Act ...

  8. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  9. 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换

    路由其实也可以很简单-------Asp.net WebAPI学习笔记(一)   MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...

随机推荐

  1. linux浏览器,邮件客户端,输入法,双屏设置,应用软件,scrot -s截图,office

    搜狗输入法linux版:http://pinyin.sogou.com/linux/help.php win/linux同时支持比较好用的浏览器:maxthon,firefox,maxthon,ope ...

  2. BZOJ2324: [ZJOI2011]营救皮卡丘

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1359  Solved: 522[Submit][Stat ...

  3. 透过Extjs学习JavaScript---闭包篇

    目录 一.前言 二.基础讲解 三.知识应用 四.总结 五.常见问题 一.前言 JavaScript设计得最出色的就是它的函数的实现,它几乎接近于完美.我们现在现就来介绍它其中一个功能“闭包”.我们可以 ...

  4. 计算机语言的发展(the history of computer's language)

    第一部分 计算机语言的分类: 机器语言:直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码.例如:1011011000000000,表示加法.可以直接执行. 汇编语言:汇编指令集.伪指 ...

  5. Emacs学习阶段小结-Emacs常用快捷键总结

    首先推荐一下Emacs自带的Emacs Tutorial,跟着这个做一边,两三个小时,基本的使用就能掌握了.之后的神教程就有很多了,比如<Sams.Teach.Yourself.Emacs.in ...

  6. Event — Windows API

    Event即事件是一种用于进行线程/进程间同步的对象,事件有置位和复位两种状态,当线程通过waiting functions等待Event对象置位时该线程将进入阻塞状态,当该Event对象被置位或等待 ...

  7. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...

  8. 深入理解object C中复制对象的用法(一)

    第一.复制对象的基本概念 复制一个对象为副本,开辟一块新的内存来存储副本对象. 第二.如果一个对象想具备复制的功能,必须实现<NSCopying>协议和<NSMutableCopyi ...

  9. Android学习之电话拨号器

    本人自己是做android驱动的,也会接触到系统层.上层的应用,所以在闲暇的时候也就开始了学习android应用的路程,在这里把这些东西记下来,希望自己能坚持下去,也好以后复习用. 今天先实现一个简单 ...

  10. 你的第一个Windows程序——绘制窗口

    MSDN原文(英文) 绘制窗口 你已经创建了你的窗口,现在你想在它里面显示东西.在WIndows术语里,这就是所谓的绘制窗口.混合隐喻,一个窗口是一个空白画布,等待你去填充它. 有时你的程序将启动绘制 ...