当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net COOKIES需要注意的一点

ASP.NET
asp.net Execl的添加,更新操作实现代码
asp.net 生成曲线图实现代码
从外部的js文件中获取ASPX页面的控件ClientID
asp.net 因为数据库正在使用的解决方法
asp.net Repeater 自递增
asp.net 实现防迅雷等下载工具盗链
ASP.NET封装的SQL数据库访问类
asp.net 通过指定IP地址得到当前的网络上的主机的域名
aspx 服务器架设问题解决
ASP.NET Session使用详解
Asp.net 5种页面转向方法
ASP.NET 用户多次登录的解决方法
ASP.NET下母版页和内容页中的事件发生顺序整理
asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)
从客户端检测到有潜在危险的Request.Form值的asp.net代码
asp.net CommunityServer中的wwwStatus
在应用程序级别之外使用注册为allowDefinition=''MachineToApplication''的节是错误的
.net开发人员常犯的错误分析小结
ASP.net Substitution 页面缓存而部分不缓存的实现方法
asp.net 生成静态时的过滤viewstate的实现方法

ASP.NET 中的 asp.net COOKIES需要注意的一点


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 75 ::
收藏到网摘: n/a

COOKIES是很方便使用,也是很广泛使用的状态存储体 由于COOKIES的设置简单,使用起来也很方便,因此,平时直接读写COOKIE的过程中并没有发现COOKIE的Expires问题。
当从 REQUEST获取一个COOKIES实例后,如果不重新设置Expires的情况下再次将COOKIES发送到客户端,Expires会变成关闭页面过期。
举个例:
先在一个页面里发送COOKIES
HttpCookie _currentCookie;
_currentCookie = new HttpCookie("test");
_currentCookie.Expires = DateTime.Now.AddYears(1);
Response.AppendCookie(_currentCookie);
然后再另一个页面将它接收
HttpCookie _currentCookie;
_currentCookie = Request.Cookies["test"];
此时,我们可以通过获取并显示出Expires过期时间。
Response.Write(_currentCookie.Expires.ToString());
照常理,我们没有改动这个COOKIES,获取后原封不动的有发送到了浏览器,应该不会有什么变化。
但是实际上会发现一个问题
_currentCookie["test"].Expires 变成了 0001-1-1 关闭页面后即过期。
通过以上实验,发现,实际上我们无法获取COOKIES的Expires属性,所以,在使用Response.AppendCookies的时候,如果该实例没有重新设置Expires,则Expires会以默认设置(页面关闭过期)被发送,因此每次发送COOKIE如果你希望有过期时间都必须重新设置。
这个问题是我在封装COOKIE时遇到的,虽然以前也非常经常的用到COOKIES,但是这次因为想封装成一个独立的类,所以在精简代码的过程中遇到这样的问题!
看来,不管多熟悉的东西,它总会有让人陌生的一面,需多多学习!
当然,这是在.NET2.0 C#中,似乎1.1中是可以获取REQUEST过来的COOKIE的Expires属性的。