关于后端cookie的问题,设置cookie后,可以立即得到,但重新发出请求后,cookie就获取不到了,设置了cookie的过期时间的。
在:ashx一般处理程序中有一个检查cookie的函数如下:
private void CheckCartCookie(HttpContext context)
{
int bookId = Convert.ToInt32(context.Request["bookId"]);
int bookAmount = Convert.ToInt32(context.Request["amount"]);
string bookName = context.Request["bookName"];
string get_value = Common.CookieHelper.GetCookieValue("cart");
if (Common.CookieHelper.GetCookieValue("cart")==string.Empty)//缓存中未有“cart”
{
Model.CookieCart cookieCart = new Model.CookieCart
{
BookId = bookId,
Amount = bookAmount,
BookName = bookName
};
list.Add(cookieCart);
Common.CookieHelper.SetCookie("cart",Common.JsonHelper.ObjectToJson(list), DateTime.Now.AddDays(7));
string getvalue = Common.CookieHelper.GetCookieValue("cart");
}
刚设置完cookie后,cookie有值,能够发现getvalue 是存的正确的cookie,但重新发出请求后,就得不到cookie的值,因为得不到
get_value的值,这是为什么?求大佬解答
cookie我封装了一个类CookieHelper代码如下:
public class CookieHelper
{
/// <summary>
/// 清除指定Cookie
/// </summary>
/// <param name="cookiename">cookiename</param>
public static void ClearCookie(string cookiename)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddYears(-3);
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
/// <summary>
/// 获取指定Cookie值
/// </summary>
/// <param name="cookiename">cookiename</param>
/// <returns></returns>
public static string GetCookieValue(string cookiename)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
string str = string.Empty;
if (cookie != null)
{
str = HttpUtility.UrlDecode(cookie.Value);
}
return str;
}
/// <summary>
/// 添加一个Cookie(24小时过期)
/// </summary>
/// <param name="cookiename"></param>
/// <param name="cookievalue"></param>
public static void SetCookie(string cookiename, string cookievalue)
{
SetCookie(cookiename, HttpUtility.UrlEncode(cookievalue), DateTime.Now.AddDays(1.0));
}
/// <summary>
/// 添加一个Cookie
/// </summary>
/// <param name="cookiename">cookie名</param>
/// <param name="cookievalue">cookie值</param>
/// <param name="expires">过期时间 DateTime</param>
public static void SetCookie(string cookiename, string cookievalue, DateTime expires)
{
HttpCookie cookie = new HttpCookie(cookiename)
{
Value = HttpUtility.UrlEncode(cookievalue),
Expires = expires
};
HttpContext.Current.Response.Cookies.Add(cookie);
}
}