Как создать непостоянный (в памяти) http cookie в C #? - PullRequest
6 голосов
/ 21 декабря 2010

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

Ответы [ 6 ]

7 голосов
/ 21 декабря 2010

Файлы cookie без явно заданного срока действия автоматически исчезнут после завершения сеанса просмотра.

Теперь «сеанс просмотра» означает разные вещи для разных браузеров. Для некоторых браузеров это означает, что каждый экземпляр браузера закрыт. Для некоторых это просто означает, что соответствующие вкладки или оригинальный браузер закрыты.

В своем тестировании убедитесь, что вы закрываете КАЖДЫЙ экземпляр браузера перед повторным открытием, чтобы найти файл cookie. Если проблемы не устранены, опубликуйте имя и ревизию браузера.

6 голосов
/ 21 декабря 2010
cookie.Expires = DateTime.MinValue;

срок действия этого файла cookie истечет, как только браузер закроется.

4 голосов
/ 21 декабря 2010

Если вы не укажете свойство Cookie.Expires, срок действия куки-файла истечет в конце сеанса браузера.

2 голосов
/ 13 сентября 2014

Cookie не будет уничтожен при закрытии браузера, если Получено отсюда

 HttpCookie cookie = new HttpCookie(name);
 cookie.Value = value;
 cookie.Expires = Convert.ToDateTime(“12/12/2008″);  //*difference is here*//
 Response.Cookies.Add(cookie);}

Cookie будет потеряно при закрытии браузера, если

     HttpCookie cookie = new HttpCookie(name);
     cookie.Value = value;
     Response.Cookies.Add(cookie);}
2 голосов
/ 15 апреля 2014

Этот вопрос был размещен онлайн более 1000 раз.Лучший способ справиться с непостоянным временем ожидания файлов cookie при открытом браузере - добавить ключевое значение для времени ожидания.Приведенный ниже код используется для регистрации значения ключа идентификатора пользователя и безопасности шифрования (не входит в комплект) для обеспечения совместимости браузера.Я не использую проверку подлинности с помощью форм.

HttpCookie cookie = new HttpCookie(name);
cookie.Values["key1"] = value;
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString(); 
                             //timeout 70 minutes with browser open
cookie.Expires = DateTime.MinValue;
cookie.Domain = ConfigurationManager.AppSettings["website_domain"];
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

При проверке значения ключа cookie используйте:

try
{

DateTime dateExpireDateTime;
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]);

if (DateTime.Now > dateExpireDateTime)
{
//cookie key value timeout code
}
else
{
//reset cookie
}

catch
{
//clear cookie and redirect to log in page
}

Я обнаружил проблемы совместимости при использовании проверки подлинности с помощью форм и Google Chrome.

1 голос
/ 21 декабря 2010

Посмотрите на переменную ASP.NET Session. Это будет сохраняться в зависимости от вашего браузера и может быть установлено как «без файлов cookie» или с жестким временем ожидания.

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28VS.71%29.aspx

...