asp.net的cookie应用5

前面的示例假设您要读取名称已知的 Cookie。有时,您可能需要读取可供页面使用的所有 Cookie。要读取可供页面使用的所有 Cookie 的名称和值,您可以利用如下代码遍历 Request.Cookies 集合: 
   
  Dim i As Integer 
  Dim output As String = "" 
  Dim aCookie As HttpCookie 
  For i = 0 to Request.Cookies.Count - 1 
  aCookie = Request.Cookies(i) 
  output &= "Cookie 名称 = " & Server.HtmlEncode(aCookie.Name) & "<br>" 
  output &= "Cookie 值 = " & Server.HtmlEncode(aCookie.Value) & _ 
  & "<br><br>" 
  Next 
  Label1.Text = output
 

   
    注意:运行此代码时,您很可能会看到一个名为“ASP.NET_SessionId”的Cookie,ASP.NET 用这个 Cookie 来保存您的会话的唯一标识符。这个会话 Cookie 不会永久保存到您的硬盘上。有关会话 Cookie 的详细信息,请参阅本文后面的 Cookie 和会话状态。 
  前面的示例有一个限制:如果 Cookie 有子键,就会以一个单独的名称/值字符串来显示子键。Cookie 的 HasKeys(英文)属性可以告诉您该 Cookie 是否有子键。如果有子键,您可以在子键集合中向下钻取,获取各个子键的名称和值。 
   
    如前文所述,您可以从 Cookie 属性 Values(英文)中获取有关子键的信息,该属性是类型 NameValueCollection 的集合。您可以根据索引值从 Values 集合中直接读取子键值。相应的子键值可以从 Values 集合的成员 AllKeys(英文)中得到,该成员将返回一个字符串集合。 
   
    以下示例是对前一示例的修改。示例中使用 HasKeys 属性来测试子键,如果检测到子键,就从 Values 集合中获取子键: 
   
  Dim i As Integer 
  Dim j As Integer 
  Dim output As String = "" 
  Dim aCookie As HttpCookie 
  Dim subkeyName As String 
  Dim subkeyValue As String 
  For i = 0 To Request.Cookies.Count - 1 
  aCookie = Request.Cookies(i) 
  output &= "名称 = " & aCookie.Name & "<br>" 
  If aCookie.HasKeys Then 
  For j = 0 To aCookie.Values.Count - 1 
  subkeyName = Server.HtmlEncode(aCookie.Values.AllKeys(j)) 
  subkeyValue = Server.HtmlEncode(aCookie.Values(j)) 
  output &= "子键名称 = " & subkeyName & "<br>" 
  output &= "子键值 = " & subkeyValue & "<br><br>" 
  Next 
  Else 
  output &= "值 = " & Server.HtmlEncode(aCookie.Value) & "<br><br>" 
  End If 
  Next 
  Label1.Text = output
 

   
    您也可以把子键作为 NameValueCollection 对象进行提取,如下所示: 
   
  If aCookie.HasKeys Then 
  Dim CookieValues As _ 
  System.Collections.Specialized.NameValueCollection = aCookie.Values 
  Dim CookieValueNames() As String = CookieValues.AllKeys 
  For j = 0 To CookieValues.Count – 1 
  subkeyName = Server.HtmlEncode(CookieValueNames(j)) 
  subkeyValue = Server.HtmlEncode(CookieValues(j)) 
  output &= "子键名称 = " & subkeyName & "<br>" 
  output &= "子键值 = " & subkeyValue & "<br><br>" 
  Next 
  Else 
  output &= "值 = " & aCookie.Value & "<br><br>" 
  End If
 

   
    注意:请记住,我之所以调用 Server.HtmlEncode 方法,只是因为我要在页面上显示 Cookie 的值。如果您只是测试 Cookie 的值,就不必在使用前对其进行编码。 
   
    修改和删除 Cookie 
   
    有时,您可能需要修改某个 Cookie,更改其值或延长其有效期。(请记住,由于浏览器不会把有效期信息传递到服务器,所以您无法读取 Cookie 的过期日期。) 
   
    当然,实际上您并不是直接更改 Cookie。尽管您可以从 Request.Cookies 集合中获取 Cookie 并对其进行操作,但 Cookie 本身仍然存在于用户硬盘上的某个地方。因此,修改某个 Cookie 实际上是指用新的值创建新的 Cookie,并把该 Cookie 发送到浏览器,覆盖客户机上旧的 Cookie。 
   
    以下示例说明了如何更改用于储存站点访问次数的 Cookie 的值: 
   
  Dim counter As Integer 
  If Request.Cookies("counter") Is Nothing Then 
  counter = 0 
  Else 
  counter = CInt(Request.Cookies("counter").Value) 
  End If 
  counter += 1 
  Response.Cookies("counter").Value = counter.ToString 
  Response.Cookies("counter").Expires = DateTime.Now.AddDays(1) 

   
    或者: 
   
  Dim ctrCookie As HttpCookie 
  Dim counter As Integer 
  If Request.Cookies("counter") Is Nothing Then 
  ctrCookie = New HttpCookie("counter") 
  Else 
  ctrCookie = Request.Cookies("counter") 
  End If 
  counter = CInt(ctrCookie.Value) + 1 
  ctrCookie.Value = counter.ToString 
  ctrCookie.Expires = DateTime.Now.AddDays(1) 
  Response.Cookies.Add(ctrCookie)
 
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值