Cookie常用

jiels - by - 18 六月, 2006 03:40

 

None.gif Response.Cookies[ " userName " ].Value  =   " patrick " ;
None.gifResponse.Cookies[
" userName " ].Expires  =  DateTime.Now.AddDays( 1 );
None.gif
None.gifHttpCookie aCookie 
=   new  HttpCookie( " lastVisit " );
None.gifaCookie.Value 
=  DateTime.Now.ToString();
None.gifaCookie.Expires 
=  DateTime.Now.AddDays( 1 );
None.gifResponse.Cookies.Add(aCookie);
None.gif

此示例向 Cookies 集合添加两个 Cookie,一个名为 userName,另一个名为 lastVisit。对于第一个 Cookie,Cookies 集合的值是直接设置的。可以通过这种方式向集合添加值,因为 Cookies 是从 NameObjectCollectionBase 类型的专用集合派生的。

对于第二个 Cookie,代码创建了一个 HttpCookie 类型的对象实例,设置其属性,然后通过 Add 方法将其添加到 Cookies 集合。在实例化 HttpCookie 对象时,必须将该 Cookie 的名称作为构造函数的一部分进行传递。

这两个示例都完成了同一任务,即向浏览器写入一个 Cookie。在这两种方法中,有效期值必须为 DateTime 类型。但是,lastVisited 值也是日期时间值。因为所有 Cookie 值都存储为字符串,因此,必须将日期时间值转换为 String。


多值

None.gif Response.Cookies[ " userInfo " ][ " userName " =   " patrick " ;
None.gifResponse.Cookies[
" userInfo " ][ " lastVisit " =  DateTime.Now.ToString();
None.gifResponse.Cookies[
" userInfo " ].Expires  =  DateTime.Now.AddDays( 1 );
None.gif
None.gifHttpCookie aCookie 
=   new  HttpCookie( " userInfo " );
None.gifaCookie.Values[
" userName " =   " patrick " ;
None.gifaCookie.Values[
" lastVisit " =  DateTime.Now.ToString();
None.gifaCookie.Expires 
=  DateTime.Now.AddDays( 1 );
None.gifResponse.Cookies.Add(aCookie);
None.gif

 

读取 Cookie

浏览器向服务器发出请求时,会随请求一起发送该服务器的 Cookie。在 ASP.NET 应用程序中,可以使用 HttpRequest 对象读取 Cookie,该对象可用作 Page 类的 Request 属性使用。HttpRequest 对象的结构与 HttpResponse 对象的结构基本相同,因此,可以从 HttpRequest 对象中读取 Cookie,并且读取方式与将 Cookie 写入 HttpResponse 对象的方式基本相同。下面的代码示例演示两种方法,通过这两种方法可获取名为 username 的 Cookie 的值,并将其值显示在 Label 控件中:

 
   
None.gif if (Request.Cookies[ " userName " !=   null )
None.gif    Label1.Text 
=  Server.HtmlEncode(Request.Cookies[ " userName " ].Value);
None.gif
None.gif
if (Request.Cookies[ " userName " !=   null )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    HttpCookie aCookie 
= Request.Cookies["userName"];
InBlock.gif    Label1.Text 
= Server.HtmlEncode(aCookie.Value);
ExpandedBlockEnd.gif}

None.gif


在尝试获取 Cookie 的值之前,应确保该 Cookie 存在;如果该 Cookie 不存在,将会收到 NullReferenceException 异常。还请注意在页面中显示 Cookie 的内容前,先调用 HtmlEncode 方法对 Cookie 的内容进行编码。这样可以确保恶意用户没有向 Cookie 中添加可执行脚本。

读取 Cookie 中子键值的方法与设置该值的方法类似。下面的代码示例演示获取子键值的一种方法:

None.gif if (Request.Cookies[ " userInfo " !=   null )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    Label1.Text 
= 
InBlock.gif        Server.HtmlEncode(Request.Cookies[
"userInfo"]["userName"]);
InBlock.gif
InBlock.gif    Label2.Text 
=
InBlock.gif        Server.HtmlEncode(Request.Cookies[
"userInfo"]["lastVisit"]);
ExpandedBlockEnd.gif}

None.gif


在上面的示例中,代码读取子键 lastVisit 的值,该值先前被设置为字符串表示形式的 DateTime 值。Cookie 将值存储为字符串,因此,如果要将 lastVisit 值作为日期使用,必须将其转换为适当的类型,如此示例所示:

None.gif DateTime dt;
None.gifdt 
=  DateTime.Parse(Request.Cookies[ " userInfo " ][ " lastVisit " ]);
None.gif


Cookie 中的子键被类型化为 NameValueCollection 类型的集合。因此,获取单个子键的另一种方法是获取子键集合,然后再按名称提取子键值,如下面的示例所示:

None.gif if (Request.Cookies[ " userInfo " !=   null )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    System.Collections.Specialized.NameValueCollection
InBlock.gif        UserInfoCookieCollection;
InBlock.gif       
InBlock.gif    UserInfoCookieCollection 
= Request.Cookies["userInfo"].Values;
InBlock.gif    Label1.Text 
= 
InBlock.gif        Server.HtmlEncode(UserInfoCookieCollection[
"userName"]);
InBlock.gif    Label2.Text 
=
InBlock.gif        Server.HtmlEncode(UserInfoCookieCollection[
"lastVisit"]);
ExpandedBlockEnd.gif}

None.gif

转载于:https://www.cnblogs.com/jiels/archive/2006/06/20/430861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值