2009-03-10 2 views
6

Меня интересует, как сделать обычный объект HttpCookie в файл cookie, срок действия которого истекает в конце сеанса. Меня не интересует showing me HttpContext.Session. Как файл cookie сеанса просматривается в заголовках ответов по сравнению с обычным файлом cookie? Как я могу изменить HttpCookie, срок действия которого истекает в конце сеанса? Благодаря!.net HttpCookie class/session cookie вопросы

ответ

14

Сессионный файл cookie - это только файл cookie, который не имеет установленного срока годности.

Response.Cookies.Add(new HttpCookie("name", "value")); 

или:

Response.Cookies["name"] = "value"; 
7

Срок действия файла cookie с истечением срока действия DateTime.MinValue (1/1/0001) истекает в конце сеанса. Это дата истечения по умолчанию для файла cookie в asp.net.

Вы можете принудительно удалить cookie с клиента, установив дату истечения срока действия на что-то до «now» (DateTime.Now.AddDays (-1d)), и в этом случае он будет удален при попадании клиента ,

Если у нас были нулевые типы, когда HttpCookie был закодирован, я предполагаю, что нулевая дата будет равна куки-файлу на основе сеанса, а все остальное будет переведено в значение expiration, но это не так.

+0

Похоже, не устанавливая срок действия (в заголовках ответа) имеет тот же эффект? – Shawn

+0

Я не тестировал это, поэтому не могу сказать точно. Совсем недавно проводил много времени, занимаясь библиотекой файлов cookie для нашей проектной структуры. Лично я предпочитаю фрукты в эти дни. – andleer

+0

Буду рад поделиться библиотекой в ​​какой-то момент. – andleer

5

Истечение печенья:

  • Session печеньем - Истекает дата должна быть DateTime.MinValue который 1/1/0001 00:00:00
  • Normal cookie (ограниченное время) - дата окончания - любая будущая дата, равная или больше текущей DateTime.Now.
  • Удаленный файл cookie - в любое время между DateTime.MinValue и DateTime.Now.

Чтобы изменить файл cookie в файл cookie сеанса, просто назначьте MinValue.

httpCookie.Expires = DateTime.MinValue; 

Если ваш файл cookie является новым. Значение по умолчанию для DateTime должно быть DateTime.MinValue и не нужно устанавливать.

CallMeLaNN

Смежные вопросы