Хорошо, так что это меня заводит. Я написал функцию, которая считывает значение cookie. ЛогикаЧтение только что написанного печенья заставляет печенье быть запертым
- проверка Response.Cookies в случае, если это только было написано
- иначе читать из Request.Cookies получить предыдущее значение
Если печенье только что было написано тогда все хорошо, и я получаю значение. Однако, если cookie не был записан в этом посещении - он, как представляется, очищает значение уже хранимого файла cookie.
Что?
Вот код
Обратите внимание на записи происходит в контроллере
public static void PersistCookie(string cookieName, string cookieValue, bool persistent)
{
var cookie = new HttpCookie(cookieName, cookieValue)
{
Path = "/",
HttpOnly = true,
};
if (persistent)
cookie.Expires = DateTime.Now.AddMonths(6);
HttpContext.Current.Response.SetCookie(cookie);
}
Примечания чтение происходит ину частичного вида
public static string ReadCookieValue(string cookieName, bool checkResponseFirst)
{
if (checkResponseFirst && HttpContext.Current.Response.Cookies[cookieName] != null &&
HttpContext.Current.Response.Cookies[cookieName].Value.HasValue())
return HttpContext.Current.Response.Cookies[cookieName].Value;
return HttpContext.Current.Request.Cookies[cookieName] != null ? HttpContext.Current.Request.Cookies[cookieName].Value : "";
}
Это почти кажется, что только по проверяя, имеет ли файл cookie значение, он все испортит.
Мысли?
Возможно, вы можете позвонить в ReadCookieValue с частичного просмотра или через Ajax? – Andreas
Вы пробовали 'HttpContext.Request.Cookies.Get' вместо использования '[]'? – mrtig
Можете ли вы вставить фрагмент кода, в котором вы настраиваете cookie в своем ответе? Кроме того, каково ожидаемое поведение этой функции, если вы хотите очистить файл cookie? – ohiodoug