#c# #asp.net #cookies #setcookie
#c# #asp.net #файлы cookie #setcookie
Вопрос:
Файлы cookie обновляются нормально во всех браузерах, но в Google Chrome не удается обновить файлы cookie.
Ниже приведен мой код:
public static string CustomerName
{
get { return CookieStore.GetCookie("customername"); }
set { CookieStore.SetCookie("customername", value.ToString(), TimeSpan.FromHours(24), true); }
}
public static void SetCookie(string key, string value, TimeSpan expires, bool http = false)
{
HttpCookie encodedCookie = new HttpCookie(key, value);
// encodedCookie.HttpOnly = http;
if (HttpContext.Current.Request.Cookies[key] != null)
{
var cookieOld = HttpContext.Current.Request.Cookies[key];
cookieOld.Expires = DateTime.Now.Add(expires);
cookieOld.Value = encodedCookie.Value;
HttpContext.Current.Response.Cookies.Add(cookieOld);
}
else
{
encodedCookie.Expires = DateTime.Now.Add(expires);
HttpContext.Current.Response.Cookies.Add(encodedCookie);
}
}
Ответ №1:
На самом деле проблема обнаружена в функции SetCookie. вам необходимо заменить следующую строку кода
var cookieOld = HttpContext.Current.Request.Cookies[key];
со следующей строкой при обновлении вашего файла cookie.
var cookieOld = new HttpCookie(key);
Ниже приведена полная функция SetCookie.
public static void SetCookie(string key, string value, TimeSpan expires, bool http = false)
{
if (HttpContext.Current.Request.Cookies[key] != null)
{
var cookieOld = new HttpCookie(key);
cookieOld.Expires = DateTime.Now.Add(expires);
cookieOld.Value = value;
HttpContext.Current.Response.Cookies.Add(cookieOld);
}
else
{
HttpCookie encodedCookie = new HttpCookie(key, value);
encodedCookie.Expires = DateTime.Now.Add(expires);
HttpContext.Current.Response.Cookies.Add(encodedCookie);
}
}