由于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属性的。
asp.net COOKIES需要注意的一点_实用技巧
时间: 2024-12-10 13:57:18
asp.net COOKIES需要注意的一点_实用技巧的相关文章
ASP.NET下对cookies的操作实现代码_实用技巧
复制代码 代码如下: public class BsCookie { //操作的cookie private HttpCookie _theCookie; //对应的cookie的名称 private string _cookieName; private bool _httpOnly = true; /// <summary> /// 是否只允许在服务器端访问,默认只允许在服务端访问 /// </summary> public bool HttpOnly { get { retu
asp.net网站防恶意刷新的Cookies与Session解决方法_实用技巧
本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public double time; public const int freetime = 1;//防刷冰冻时间间隔,当前为1秒 #region 防恶意刷新 if (Session.SessionID == null) { Response.End(); } else if (Session["sionid
详解ASP.NET MVC Form表单验证_实用技巧
一.前言 关于表单验证,已经有不少的文章,相信Web开发人员也都基本写过,最近在一个个人项目中刚好用到,在这里与大家分享一下.本来想从用户注册开始写起,但发现东西比较多,涉及到界面.前端验证.前端加密.后台解密.用户密码Hash.权限验证等等,文章写起来可能会很长,所以这里主要介绍的是登录验证和权限控制部分,有兴趣的朋友欢迎一起交流. 一般验证方式有Windows验证和表单验证,web项目用得更多的是表单验证.原理很简单,简单地说就是利用浏览器的cookie,将验证令牌存储在客户端浏览器上,co
ASP.NET Forms身份认证详解_实用技巧
ASP.NET身份认证基础 在开始今天的内容之前,我想有二个最基础的问题首先要明确: 1. 如何判断当前请求是一个已登录用户发起的? 2. 如何获取当前登录用户的登录名? 在标准的ASP.NET身份认证方式中,上面二个问题的答案是: 1. 如果Request.IsAuthenticated为true,则表示是一个已登录用户. 2. 如果是一个已登录用户,访问HttpContext.User.Identity.Name可获取登录名(都是实例属性). 接下来,本文将会围绕上面二个问题展开,请继续阅读
.net中的session与cookies区别及使用方法_实用技巧
先介绍一下比较简单的使用方法: 给COOKIES赋值 复制代码 代码如下: Response.Cookies["uid"].Value = "20"; Response.Cookies["LoginCode"].Value = "58469"; 以上就是分别对两个COOKIES变量赋了两个不同的传,那么在使用COOKIES时,我们怎样来控制COOKIES的有效期呢,看下面: 复制代码 代码如下: Response.Cooki
Asp.net cookie的处理流程深入分析_实用技巧
一说到Cookie我想大家都应该知道它是一个保存在客户端,当浏览器请求一个url时,浏览器会携带相关的Cookie达到服务器端,所以服务器是可以操作Cookie的,在Response时,会把Cookie信息输出到客服端.下面我们来看一个demo吧,代码如下: 第一次请求结果如下: 第二次请求结果如下: 到这里我们可以看到第二次请求传入的Cookie正好是第一次请求返回的Cookie信息,这里的cookie信息的维护主要是我们客户端的浏览器,但是在Asp.net程序开发时,Cookie往往是在服务
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页_实用技巧
ListView控件本身并没有分页功能,不过借助于ASP.NET中新增加的DataPager控件,我们可以非常方便地对ListView中的数据设置分页,这几乎不需要开发人员写一行代码,将ListView控件放到页面上,设置好布局和DataSource,然后再添加一个DataPager控件,将它的PagedControlID属性设置成ListView的ID,PageSize中设置每页要显示的数据条数,然后在Fields中设置好分页的样式(当然你完全可以不用去管样式,ASP.NET会根据内置的样式来
ASP.NET实现伪静态网页方法小结_实用技巧
本文实例总结了ASP.NET实现伪静态网页方法,分享给大家供大家参考之用.具体方法如下: 方法一:利用Httphandler实现URL重写(伪URL及伪静态) 我们有时候会见到这样的地址:"http://www.XXXX.com/show-12-34.html",你或许认为在站点服务器根目录"/"下存在名为"show-12-34.html"的文件,其实实际它可能是不存在的,而可能你看到的内容是"/aspx/show.aspx?type=
asp.net 获取IP的相关资料_实用技巧
ASP.net 获得客户端的IP,最常见的是使用下述代码: 复制代码 代码如下: string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址:如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址. REMOTE_ADDR 说明: 访问客户端的 IP