• .net中Cookie的用法


    Response.Cookies["name"].Value = name;写入cookies
    TextBox3.Text = Request.Cookies["name"].Value;读取cookies
    Response.Cookies["name"].Expires = DateTime.Now;清空cookies

    cookie 是一小段文本信息,伴随用户请求,在web服务器和浏览器之间传递。用户每次访问站点的时候,

    web应用程序都可以读取cookie包含的信息。

    假设在用户请求您的网站的某个页面时,您的应用程序不仅是返回请求的页面。同时也返回一个包含日期

    和时间的cookie。用户的浏览器在获得页面的同时也获得了cookie.并且cookie保存在客户端的cookie文

    件夹中。

    2.cookie 的限制

    大多数浏览器支持最多可达4096字节(大约4KB)cookie.浏览器还限制了,一个站点可以在客户端保存

    cookie数。大多数浏览器允许每个站点最多放20个cookie.如果试图保存更多的cookie,那么先前的cookie

    将被删除。还有些浏览器会对来自所有站点cookie总数限制,这个限制通常为300个。

    3.cookie 如何创建

    在创建cookie的时候要指定几个值。最初,您要指定cookie的名字和要保存的值。您也可以创建多个

    cookie。但每个cookie的名字必须唯一,以便日后取值时识别。(cookie是按名字储存的,所以您要创建

    两个名称相同的cookie,那么最后那个cookie将覆盖前一个。)

    您也可以给cookie指定过期日期和时间.cookie是写入到用户硬盘上的,然后可能一直都留在磁盘上。因

    此,您可以指定cookie的过期日期和时间。当用户下次访问您的站点的时候,浏览器会先检查您站点的所

    有cookie,如果某个cookie已经过期,浏览器不会把这个cookie随页面请求一起发送给服务器,而是删除

    这个已经过期的cookie.(您的站点可能已经在用户磁盘上写入多个cookie。但个每个cookie的过期日期和

    时间不同)。浏览器负责磁盘上的cookie,这将影响您的应用程序对cookie的使用

    如果没有设置cookie的有效时间,还是可以创建cookie(我们称做会话cookie),会话cookie不会保存到磁

    盘上,而是保存在内存中。成为用户会话信息的一部分。如果用户关闭浏览器或者会话超时,该cookie将

    被删除。这种非永久性的cookie.

    4.cookie 中的创建方法

    您可以通过多种方法创建cookie然后把cookie对象放到Response.Cookies集合中。随请求页面一起返回给

    浏览器。

    第一种:

    Response.Cookies("cookiename").Value="aaaa"; //创建一个名字为cookiename的cookie.然后在cookie

    中存储的值为aaaa

    Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1);//指定cookie的过期时间为1天

    第二种:

    HttpCookie acookie=new HttpCookie(cookiename);//HttpCookie类创建cookie然后在构造方法中指定

    cookie名称

    还有一种重载构造函数

    HttpCookie acookie=new HttpCookes(cookiename,cookievalue);//详细用法参考MSDN这里不在讲述

    //同第一种方法一样,也要给cookie指定失效时间

    acookie.Expires=DateTime.Now.AddDays(1);//失效时间为1天

    //acookie.Value="aaaa"; 也可以这样给cookie赋值

    Response.Cookies.Add(acookie);然后写入到浏览器中

    注意:在设置cookie有效时间必须为DateTime类型。而为cookie的Value属性赋值必须为字符串类型(不

    是字符串类型,必须要转型)因为cookie中的任何值最终都是以字符串的形式保存的。

    5.多值cookie(子键)

    您也可以在一个cookie中保存多个名称/值对。名称/值对也称作“键”或“子键”。(如果你熟悉URL,你会发

    现子键和查询字符串非常相象)。

    6.如何创建带子键的cookie ,其实和创建cookie的语句基本相同。我们把上面的例子加以改进

    看下面的例子

    第一种:

    Response.Cookies("cookiename")("cookiechildname")="cookievalue";//

    创建一个名字为cookiename的cookie,然后在下面有个子键,并给子键赋值

    是不是合创建一个cookie很相似

    Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1);//

    同样给cookie指定过期日期。和创建一个cookie一样,指定cookie的名称就可以

    第二种:

    HttpCookie acookie=new HttpCookie(cookiename);//同样创建一个cookie对象

    重载那个我就不写了

    acookie.Values["cookiename"]="cookievalue";//在cookie下创建子键并赋予值

    这个不在是Value而是Values集合属性。我们知道集合集合可以通过索引访问的

    acookie.Expires=DateTime.Now.AddDays(1);//还是给cookie指定一个失效日期

    Response.Cookies.Add(acookie);//把cookie写入到浏览器中

    基本上和创建不带子键的cookie很相同,如果想具体了解请参考msdn.这里就不讲述了

    7.如何控制cookie

    默认情况下,一个站点的所有cookie都保存在客户端,而且这些cookie都会随着对站点的发送请求一起发

    送到服务器。也就是说,站点的每个页面都能得到该站点的所有cookie.

    要将cookie限制到服务器上的某个文件夹,请按如下方法设置cookie的Path属性:

    HttpCookie acookie=new HttpCookie(cookiename);

    acookie.Value="aaaa";

    acookie.Expires=DateTime.Now.AddDays(1);

    acookie.Path=/Application;

    Response.Cookies.Add(acookie);

    路径可以是站点根目录下的物理路径,也可以是虚拟根目录。这样一来,cookie就只能用语Application

    文件夹或虚拟根目录中页面。例如,如果您的站点名为www.5hui.net

    ,则前面示例中生成cookie就只能用语路径为5hui.net/Application/" target="_blank" rel="external">5hui.net/" target="_blank" rel="external">http://www.5hui.net/Application/的页面以及该文件夹下

    面的所有页面,而不适用于其他应用程序的页面,如5hui.net/test/" target="_blank" rel="external">5hui.net/" target="_blank" rel="external">http://www.5hui.net/test/或

    5hui.net/" target="_blank" rel="external">http://www.5hui.net/下的页面。

    提示:通过对InternetExplorer和Mozilla浏览器进行测试发现,此处使用的路径是区分大小写的。一般

    而言,Windows 服务器上的URL不区分大小写,但这种情况例外。您无法控制用户如何在浏览器中输入URL

    ,但是,如果您的应用程序依赖于与特定路径相关的 Cookie,则请确保您所创建的所有超链接中的URL与

    Path属性值的大小写相匹配。

    将Cookie的有效范围限制到域

    默认情况下,Cookie与特定的域相关联。例如,如果您的站点是www.5hui.net,那么当用户向该站点

    请求页面时,您编写的 Cookie就被发送到服务器。(有特定路径值的Cookie除外,我在上一节刚刚解释

    过。)如果您的站点有子域(例如contoso.com、sales.5hui.net和support.5hui.net),就可以

    把Cookie同特定的子域相关联。为此,需要设置Cookie的Domain 属性,如下所示:

    Response.Cookies("cookiename").Value=DateTime.Now.ToString

    Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1)

    Response.Cookies("cookiename").Domain="support.contoso.com"

    如果按照这种方式设置域,则Cookie只能用于指定子域中的页面。

    您也可以利用Domain属性来创建可在多个子域中共享的Cookie。例如,对域进行如下设置:

    Response.Cookies("cookiename").Value=DateTime.Now.ToString

    Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1)

    Response.Cookies("cookiename").Domain="contoso.com"

    这样,该Cookie就可用于主域、sales.contoso.com和support.contoso.com

    8.如何读取cookie

    当浏览器向服务器发送请求时,该服务器的cookie和请求页面一起返回,您可以使用request对象来读取

    cookie.读取cookie的方法和Response对象写入cookie的方法非常类似

    看下面的例子:

    第一种方法:

    string info =Request.Cookies["cookiename"].Value;//通过索引来获取值

    是不是和Response.Cookies("cookiename").Value=info很相似

    第二种方法

    HttpCookie acookie=Request.Cookie("cookiename");//通过Request获取acookie对象

    acookie.Value;//在通过Value属性获取值基本上和Response用法相似。

    //在获取cookie之前,应确保该cookie确实存在。否则,您将得到一个system.NullReferenceException

    异常。最好在页面显示cookie内容之前。用Server.HtmlEncode()方法对cookie内容进行编码。以确保用

    户没有cookie中没有添加

    可执行简本。

    9.如何读取带子键的cookie

    与读取cookie相类似

    第一种方法:

    string info=Request.Cookie["cookiename"]["cookiechildname"];//与

    Response.Cookie["cookiename"]["cookiechildname"]=info

    第二种方法:

    HttpCookie acookie=Request.Cookie["cookiname"]["cookiechildname"]

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/_zjl/p/2139508.html
Copyright © 2020-2023  润新知