• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET中Cookie状态的说明与用法

ASP.NET中Cookie状态的说明与用法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了启动asp.net状态服务,asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Cookie 最早出现是在Netscape Navigator 2.0 中。后来 ASP 也引入了这个技术,它的作用是与 Session 对象相结合来识别用户。每当用户开始连接站点时,系统将自动在内存块中创建一个用户有关的会话状态,同时创建一个用户的 ID 存放在浏览器端,与当前的用户惟一地联系起来。这样,服务器保存了 Session,浏览器保存了 Cookie(用户的 ID)。当下一次用户发出请求时,请求的用户将被要求提交用户的 ID,两者对照以正确地还原原来的会话状态。这就是在无状态协议的 HTTP 条件下保持用户标志的方法。
    可以通过 Response.Cookies.Add() 方法直接向浏览器写入 Cookie,通过 Request.Cookies 方法读取已经设置好的 Cookie。
    写入Cookie 的方法是,先创建一个HttpCookie 对象,通过这个对象来构造一个 Cookie。例如:

//创建一个 HttpCookie 对象 
HttpCookie cookie = new HttpCookie("乐猪网"); 
//设定此 Cookie 值 
cookie.Value = "编程入门网站"; 
//加入此 Cookie 
Response.Cookies.Add(cookie);
</div>

    Cookie 有临时的,也有永远的。永久的 Cookie 以文件形式存储在计算机上,关闭 Internet Explorer 时仍然保留在计算机上。再次访问该站点时,创建该 Cookie 的网站可以读取。在具体的编程时候,是在写入此 Cookie 的时候,设定 Cookie 的生命周期,其代码如下:

DateTime dtNow = DateTime.Now; 
TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0); 
cookie.Expires = dtNow + tsMinute; 
Response.Cookies.Add(cookie);
</div>

    以上代码是设定新产生的 Cookie 的生命期为一个小时,可以通过修改 TimeSpan 的属性来设定 Cookie 具体的生命期。如果不设定时间,默认时间为 20 分钟。
    读取指定的 Cookie 时的语句如下:

HttpCookie cookie = Request.Cookies["Cookie 的名称"];
</div>

    如果想将读出的 Cookie 显示出来时,可以使用以下语句:

Response.Write(cookie.Value.ToString());
</div>

    Cookie 是保存在客户端的字符串,它会影响用户的行为,但又不受用户的直接管理,虽然它只是一种标志(字母数字字符串)而不是程序,不可能用它来收集用户的信息,破坏用户的隐私。但有的用户仍然不放心,也可能是不愿意别人占用自己的空间,相当一部分用户在浏览器中禁止使用 Cookie。这就给识别用户带来了困难。
    ASP.NET 2.0 现在已经完全解决了在不使用 Cookie 的情况下,识别用户的方法(ASP.NET 1.1 版本只部分地解决了这一问题)。解决的方法很简单,只需要在应用程序的根目录下的 Web.config 文件中,对 <sessionState> 节点进行配置,其他任何程序都不需要修改。为什么一定要在应用程序的根目录下配置?因为会话状态的设置是应用程序范围的设置。站点中的网页要么全都使用该配置,要么全都不使用。配置的语句是:

<sessionState cookieless="useUri" />
</div>

    或

<sessionState cookieless="AutoDetect" />
</div>

    配置时,当编写到“cookieless=”语句时,将弹出 AutoDetect、useCookies、useDeviceProfile、useUri 四种选择。选择 AutoDetect 或 useUri 均可在无 Cookies 的条件下识别用户。
    虽然在 <sessionState> 节点中还可以配置会话状态管理的其他方面,包括存储介质和连接字符串等,但是,就 Cookie 而言,只需设置 Cookieless 属性即可。
    系统是如何在无 Cookie 的条件下识别用户的呢?原来当进行了前面的设置以后,系统将会要求用户自动将客户端的资源信息嵌入到用户设用的 URL 语句中。例如,在使用 Cookie 的情况下,某用户设用网页时的 URL 是:http://yourserver/folder/default.aspx,现在设置了不使用 Cookie 的配置,调用的语句的 URL 将变成:http://yourserver/folder/(session ID here)/default.aspx,其中“session ID here”代表用户的资源信息所处的位置。该信息已经被插入到 URL 的语句中。由于用户资源信息对于用户来说具有惟一性,因此可以利用它与 Session 对象结合,一起来识别用户。

下面举一个完整的小例子吧,请看下面的源代码:

HttpCookie ck = Request.Cookies["cktest"]; 
if (ck == null) 
{ 
  ck = new HttpCookie("cktest"); 
  ck.Value = "123"; 
   
  ck.Expires = DateTime.Now.AddSeconds(20);//20秒的有效期 
  Response.Cookies.Add(ck); 
  Response.Write("new ck"); 
} 
else
{ 
  Response.Write(ck.Value.ToString()); 
} 
   
//在一个Cookie中储存多个信息 
HttpCookie cookie = new HttpCookie("cktest"); 
cookie.Values.Add("v1", "1"); 
cookie.Values.Add("v2", "2"); 
cookie.Values.Add("v3", "3"); 
Response.AppendCookie(cookie); 
HttpCookie cookies = Request.Cookies["cktest"]; 
string value1 = cookies.Values["v1"]; 
string value2 = cookies.Values["v2"]; 
Response.Write(value1 + value2);
</div>

以上就是关于ASP.NET中Cookie状态的说明与用法,对于Cookie 使用的利与弊说法不一,我们要合理使用Cookie希望本文对大家学习Cookie有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • asp.net线程批量导入数据时通过ajax获取执行状态
  • ASP.NET中Cookie状态的说明与用法
  • ASP.NET设置404页面返回302HTTP状态码的解决方法
  • asp.net配置会话状态Session实现代码
  • asp.net中Post表单保存页面状态并输出源码的实现方法
  • ASP.net中保持页面中滚动条状态的代码
  • ASP.NET State service状态服务的问题解决方法

相关文章

  • 2017-05-11http调用webservice操作httprequest、httpresponse示例
  • 2017-05-11ASP.NET中JSON的序列化和反序列化使用说明
  • 2017-05-11Asp.net mvc 权限过滤和单点登录(禁止重复登录)
  • 2017-05-11异步调用webservice返回responseXML为空的问题解决方法
  • 2017-05-11asp.net MaxLengthValidator 最大长度验证控件代码
  • 2017-05-11Asp.Net中的数据源概述与配置及实例代码
  • 2017-05-11asp.net 在处理向该请求提供服务所需的配置文件时出错
  • 2017-05-11c#中带头(声明)的xml(封装)生成
  • 2017-05-11在C#中生成与PHP一样的MD5 Hash Code的方法
  • 2017-05-11asp.net下实现支持文件分块多点异步上传的 Web Services

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 实例说明asp.net中的简单角色权限控制
    • 解决Visual Studio 2012 Update 4 RC启动调试失败的方案
    • 浅谈.NET反射机制的性能优化 附实例下载
    • 在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
    • asp.net 计算字符串中各个字符串出现的次数
    • asp.net Gridview数据列中实现鼠标悬浮变色
    • 详解如何在ASP.NET Core中应用Entity Framework
    • 水晶报表asp.net的webform下基本用法实例
    • asp.net求3位不同数字的组合数
    • asp.net URL中包含中文参数造成乱码的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有