2015-09-14 6 views
0

Когда я вхожу я создаю следующее печенье:Response печенья не обновляя

HttpCookie cookie = new HttpCookie("Ortund"); 
// insert cookie values 
cookie.Expires = DateTime.Now.AddMonths(1); 
Response.Cookies.Add(cookie); 

Когда я запросить данные из этого печенья, я использую Request.Cookies:

string username = Convert.ToString(Request.Cookies["Ortund"]["Username"]); 

Когда я выйти, я сделать это:

HttpCookie cookie = new HttpCookie("Ortund"); 
cookie.Expires = DateTime.Now.AddMonths(-1); 
Response.Cookies.Add(cookie); 

по какой-то причине, теперь я сижу с печеньем, который имеет срок годности 0001-01-01 12:00:00 AM в Request.Cookies ["Ortund"] и дата истечения срока действия файла cookie не изменяется независимо от того, сколько раз я вхожу в систему.

Я сделал что-то не то здесь? Это даже близко к тому, как это должно быть сделано?

ответ

0

В вашем выходе вы создаете новый экземпляр файла cookie. Также вы используете Response.Cookies.Add, который может допускать добавление нескольких файлов cookie с таким же именем к Response.

Я бы предложил вам проверить Request на ключ файла cookie, и если он не существует, добавьте файл cookie.

Для обновления cookie сначала получите существующий объект cookie и используйте Response.SetCookie для обновления значения.

Код

набор

if(!Request.Cookies.AllKeys.Contains("Ortund")) 
{ 
    HttpCookie cookie = new HttpCookie("Ortund"); 
    // insert cookie values 
    cookie.Expires = DateTime.Now.AddMonths(1); 
    Response.Cookies.Add(cookie); 
} 

обновление

if (Request.Cookies.AllKeys.Contains("Ortund")) 
{ 
    HttpCookie cookie = Request.Cookies["Ortund"]; 
    cookie.Expires = DateTime.Now.AddMonths(-1); 
    Response.SetCookie(cookie); 
}