当前位置:  编程技术>.net/c#/asp.net

.net中Cookie用法示例详解

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本节内容: .net中cookie操作的例子。 例如:   代码示例: Response.Cookies["name"].Value = name;写入cookies TextBox3.Text = Request.Cookies["name"].Value;读取cookies Response.Cookies["name"].Expires = DateTime.Now;清空cookies   cookie 是一小段文本信息,伴随...

本节内容:
.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.

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

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

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

提示:通过对InternetExplorer和Mozilla浏览器进行测试发现,此处使用的路径是区分大小写的。一般而言,Windows 服务器上的URL不区分大小写,但这种情况例外。您无法控制用户如何在浏览器中输入URL,但是,如果您的应用程序依赖于与特定路径相关的 Cookie,则请确保您所创建的所有超链接中的URL与Path属性值的大小写相匹配。

将Cookie的有效范围限制到域

默认情况下,Cookie与特定的域相关联。例如,如果您的站点是www.,那么当用户向该站点请求页面时,您编写的 Cookie就被发送到服务器。(有特定路径值的Cookie除外,我在上一节刚刚解释过。)如果您的站点有子域(例如、sales.和support.),就可以把Cookie同特定的子域相关联。为此,需要设置Cookie的Domain 属性,如下所示:
 

代码示例:
Response.Cookies("cookiename").Value=DateTime.Now.ToString
Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1)
Response.Cookies("cookiename").Domain="support."

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

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

代码示例:
Response.Cookies("cookiename").Value=DateTime.Now.ToString
Response.Cookies("cookiename").Expires=DateTime.Now.AddDays(1)
Response.Cookies("cookiename").Domain=""
 

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

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"]

    
 
 

您可能感兴趣的文章:

  • NET c#索引器(indexer)介绍及代码示例
  • asp.net DataSet转换成josn并输出示例 iis7站长之家
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net防止页面重复提交(示例)
  • asp.net正则表达式提取中文的代码示例
  • .net获取本机公网IP地址示例
  • asp.net页面防止重复提交示例分享
  • ASP.NET Dictionary 的基本用法示例介绍
  • Asp.net中的数据绑定Eval和Bind应用示例
  • asp.net 发送邮件的简单示例
  • asp.net获取网站目录物理路径示例
  • asp.net页面中时间格式化的示例
  • asp.net datalist绑定数据后可以上移下移实现示例
  • asp.net禁止重复提交示例代码
  • asp.net DataSet转换成josn并输出示例
  • ASP.NET中上传并读取Excel文件数据示例
  • ASP.NET取得所有颜色值示例
  • asp.net错误处理Application_Error事件示例
  • asp.net获取网站绝对路径示例
  • asp.net利用存储过程实现模糊查询示例分享
  • .net生成静态页面的简单示例
  • asp.net Google样式分页控件用法
  • asp.net Cookie用法举例
  • asp.net中session用法疑问
  • .Net中的json操作类用法分析
  • asp.net Split分割字符串的3种用法
  • asp.net Timer定时器用法示例
  • ado.net操作数据库的别样用法
  • asp.net GridView用法笔记
  • 关于ASP.NET中TreeView用法的一个小例子
  • Asp.net中DataBinder.Eval用法小结
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 寻求:/proc/sys/net/ipv4 参数详解
  • .net预编译命令详解(图)
  • ASP.NET中的Inherits、CodeFile、CodeBehind的区别详解
  • asp.net 操作cookie实例详解
  • 在IIS上重新注册.NET Framework 2.0的命令和参数详解
  • asp.net页面间数据传递方法详解
  • asp.net使用npoi读取excel模板并导出下载详解
  • ASP.NET4 GridView的四种排序样式详解
  • Asp.net动态生成html页面的实例详解
  • asp.net 简单生成缩略图的代码详解
  • asp.net cookie详解
  • asp.net页面生命周期详解
  • asp.net操作cookie详解
  • asp.net调用存储过程详解
  • ASP.NET页面事件:顺序与回传方法详解
  • asp.net session性能问题详解
  • asp.net 页面刷新多种方法详解(附实例)
  • .Net笔记:System.IO之Stream的使用详解
  • log4net创建系统日志的方法详解
  • .net读写xml文档详解
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • java命名空间java.net类datagrampacket的类成员方法: getsocketaddress定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3