转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET中Cookie编程的基础知识(4)         ★★★★

ASP.NET中Cookie编程的基础知识(4)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:662 更新时间:2009/4/23 10:39:08
     读取 Cookie
  
    当浏览器向服务器发送请求时,该服务器的 Cookie 会与请求一起发送。在
ASP.NET 应用程序中,您可以使用 Request 对象来读取 Cookie。Request 对象的结构
与 Response 对象的结构基本相同,所以从 Request 对象中读取 Cookie 的方法与向
Response 对象中写入 Cookie 的方法非常类似。以下示例显示了两种方法,目的都是获
取名为“username”的 Cookie 的值并将值显示在 Label 控件中:
  
  If Not Request.Cookies("userName") Is Nothing Then
  Label1.Text = Server.HtmlEncode(Request.Cookies("userName").Value)
  End If
  
  If Not Request.Cookies("userName") Is Nothing Then
  Dim aCookie As HttpCookie = Request.Cookies("userName")
  Label1.Text = Server.HtmlEncode(aCookie.Value)
  End If
  
    在获取 Cookie 的值之前,应该确保该 Cookie 确实存在。否则,您将得到一个
System.NullReferenceException(英文)异常。还需要注意的是,在页面中显示
Cookie 的内容之前,我调用了 HttpServerUtility.HtmlEncode(英文)方法对
Cookie 的内容进行编码。之所以这样做,是因为我要显示 Cookie 的内容(一般您不会
这样做)而且要确保没有任何恶意用户在 Cookie 中添加了可执行脚本。有关 Cookie
安全性的详细信息,请参阅 Cookie 和安全性。
  
    注意:由于不同的浏览器保存 Cookie 的方式也不同,所以同一台计算机上的不
同浏览器不一定能够相互读取各自的 Cookie。例如,如果使用 Internet Explorer 测
试一个页面,然后再使用其他浏览器进行测试,那么后者就不会找到 Internet
Explorer 保存的 Cookie。当然,大多数人一般都是使用同一种浏览器进行 Web 交互的
,因此在大多数情况下不会出现问题。但有时还是会遇到问题,比如您要测试应用程序
对浏览器的兼容性。
  
    读取 Cookie 中子键值的方法与设置该值的方法类似。以下是获取子键值的一种
方法:
  
  If Not Request.Cookies("userInfo") Is Nothing Then
  Label1.Text = _
  Server.HtmlEncode(Request.Cookies("userInfo")("userName"))
  Label2.text = _
  Server.HtmlEncode(Request.Cookies("userInfo")("lastVisit"))
  End If
  
    在上面的示例中,我获取的是子键“lastVist”的值,在此前的讨论中我把该值
设置为 DateTime 值的字符串表示形式。请记住,Cookie 是用字符串的形式保存值的,
所以要将 lastVisit 值用作日期,就必须对其进行转换:
  
  Dim dt As DateTime
  dt = CDate(Request.Cookies("userInfo")("lastVisit"))
  
    Cookie 中子键的类型是 NameValueCollection(英文)类型的集合。因此,另一
种获取单个子键的方法是先获取子键集合,然后按名称提取子键的值,如下所示:
  
  If Not Request.Cookies("userInfo") Is Nothing Then
  Dim UserInfoCookieCollection As _
  System.Collections.Specialized.NameValueCollection
  UserInfoCookieCollection = Request.Cookies("userInfo").Values
  Label1.Text = Server.HtmlEncode(UserInfoCookieCollection("userName"))
  Label2.Text = Server.HtmlEncode(UserInfoCookieCollection("lastVisit"))
  End If
  
    就像设置 Cookie 一样,使用哪种方法读取 Cookie 也由您自己决定。
  
    什么是有效期?
  
    您可以读取 Cookie 的名称和值,除此以外,需要了解的有关 Cookie 的信息并
不是很多。虽然您可以获取 Domain 和 Path 属性,但是这些属性的用途很有限。例如
,您可以读取 Domain 属性,但如果您的页面与 Cookie 不在相同的域,您根本就不会
在页面的位置接收到该 Cookie。
  
    您无法读取的是 Cookie 的过期日期和时间。事实上,当浏览器向服务器发送
Cookie 信息时,浏览器并未将过期信息包括在内。您可以读取 Expires 属性,但总是
返回为零的日期/时间值。
  
    在前面的编写 Cookie 一节中,我已经讲过,是浏览器负责管理 Cookie 的,Exp
ires 属性就很好地印证了这一点。Expires 属性的主要作用是帮助浏览器执行有关
Cookie 保存的日常管理。从服务器的角度来看,Cookie 要么存在要么不存在,所以对
服务器而言,有效期并不是有用的信息。所以,浏览器在发送 Cookie 时并不提供此信
息。如果您需要 Cookie 的过期日期,就必须重新设置,关于这一点我将在修改和删除
Cookie 中介绍。
  
    更确切地说,您可以在向浏览器发送 Cookie 之前读取已在 Response 对象中设
置的 Expires 属性,但您无法从返回的 Request 对象中获取有效期信息。


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台