今天开始研究cookie,呵呵,别笑我菜还在研究这好像已经闻名几十年的东西。呵呵,路得一步一步走嘛
呵呵~~~~
私有变量#region 私有变量
/**//// <summary>
/// cookie的名称
/// </summary>
private string cookieName;
/**//// <summary>
/// cookie项的名称
/// </summary>
private string cookieItemName;
/**//// <summary>
/// cookie项的值
/// </summary>
private string cookieItemVal;
/**//// <summary>
/// cookie持续时间
/// </summary>
private int cookieTime;
#endregion
公共属性#region 公共属性
/**//// <summary>
/// 设置CookieVal的值
/// </summary>
public string CookieItemVal
{
get { return cookieItemVal; }
set { cookieItemVal = value; }
}
/**//// <summary>
/// cookie的名称
/// </summary>
public string CookieName
{
get { return cookieName; }
set { cookieName = value; }
}
/**//// <summary>
/// cookie项的名称
/// </summary>
public string CookieItemName
{
get { return cookieItemName; }
set { cookieItemName = value; }
}
public int CookieTime
{
get { return cookieTime; }
set { cookieTime = value; }
}
#endregion
私有方法#region 私有方法
#endregion
公共方法#region 公共方法
/**//// <summary>
/// 设置Cookie
/// </summary>
public void SetCookie()
{
HttpCookie cookie = new HttpCookie(CookieName);
cookie.Values.Add(CookieItemName, CookieItemVal);
cookie.Expires = System.DateTime.Now.AddMonths(CookieTime); //设置Cookie过期时间为3个月CookieTime=3
Response.Cookies.Add(cookie);
}
/**//// <summary>
/// 读取Cookie
/// </summary>
public void GetCookie()
{
HttpCookie cookie = Request.Cookies[CookieName];
CookieItemVal = cookie.Values[CookieItemName];
Response.Write(CookieItemVal
+ "_______" + CookieItemName
+ "_______" + CookieName
+ "_______" + CookieTime.ToString()
+ "_______" + cookie.Expires.ToString()); //虽然可以读取 Cookie 的名称和值,但无法读取 Cookie 的到期日期和时间。
}
/**//// <summary>
/// 设置cookie
/// </summary>
/// <param name="name">cookie名称</param>
/// <param name="itemName">cookie项的名称</param>
/// <param name="value">cookie项的值</param>
/// <param name="time">cookie所保存的时间</param>
public void SetCookie(string name,string itemName,string value,int time)
{
HttpCookie cookie=new HttpCookie(name);
cookie.Values.Add(itemName,value);
cookie.Expires=System.DateTime.Now.AddMonths(time);
Response.Cookies.Add(cookie);
}
/**//// <summary>
/// 获取
/// </summary>
/// <param name="name"></param>
/// <param name="itemName"></param>
public void GetCookie(string name,string itemName)
{
string cookieval;
HttpCookie cookie = Request.Cookies[name];
cookieval = cookie.Values[itemName];
//Response.Write(name
// + "_______" + itemName
// + "_______" + cookieval
// + "_______" + cookie.Expires.ToString());
CookieName = name;
CookieItemName = itemName;
CookieItemVal = cookieval;
CookieTime = cookie.Expires.Month;
Response.Write("gc:"+CookieName
+ "_______" + CookieItemName
+ "_______" + CookieItemVal
+ "_______" + CookieTime.ToString());//虽然可以读取 Cookie 的名称和值,但无法读取 Cookie 的到期日期和时间。
}
#endregion
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace WebAppTest
{
public partial class _Default : myClass.PageX
{
protected void Page_Load(object sender, EventArgs e)
{
//CookieItemVal = "mycookieval";
//CookieItemName = "myCookieItemName";
//CookieName = "myCookieName";
//CookieTime = 3;
//SetCookie();
//GetCookie();
SetCookie("myCookieName", "myCookieItemName", "myCookieItemValue", 3);
GetCookie("myCookieName", "myCookieItemName");
}
}
}
但是答案总是:
gc:myCookieName_______myCookieItemName_______mycookieval_______1
按我的设想最后应该是3啊~~可惜不是,断点半天返回的时间总是0-1-1 0:0:0
汗,和我预计的完全不是一回事.新手菜菜,所以比较郁闷,还好比较执着,就打开MSDN把cookie全给看了一遍~~~HOHO,发现了下面这句话:
MSDN: 虽然可以读取 Cookie 的名称和值,但无法读取 Cookie 的到期日期和时间
终于明白了问题的所在,不过还有值得郁闷的是:
还有一句话:MSDN:当浏览器向服务器发送 Cookie 信息时,并不包括有效期信息。(Cookie 的 Expires 属性始终返回值为 0 的日期时间值。)
汗,我的是1也,我想应该这么理解吧,0-1-1 0:0:0,因为年可能为0,但月和日不可能为0哦~~~`0年就是公元0年咯.嘿嘿,正解!HOHO
另外觉得MSDN中这个写得比较巧:
删除 Cookie
删除 Cookie(即从用户的硬盘中物理移除 Cookie)是修改 Cookie 的一种形式。由于 Cookie 在用户的计算机中,因此无法将其直接移除。但是,可以让浏览器来为您删除 Cookie。该技术是创建一个与要删除的 Cookie 同名的新 Cookie,并将该 Cookie 的到期日期设置为早于当前日期的某个日期。当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie。
确定浏览器是否接受 Cookie
用户可将其浏览器设置为拒绝接受 Cookie。在不能写入 Cookie 时不会引发任何错误。同样,浏览器也不向服务器发送有关其当前 Cookie 设置的任何信息。
注意 |
Cookies 属性不指示 Cookie 是否启用。它仅指示当前浏览器是否原本支持 Cookie。
|
确定 Cookie 是否被接受的一种方法是尝试编写一个 Cookie,然后再尝试读取该 Cookie。如果无法读取您编写的 Cookie,则可以假定浏览器不接受 Cookie。