Как сделать так, чтобы срок действия файла cookie сеанса ASP.NET заканчивался с помощью HttpSession ASP.NET?
-
19-08-2019 - |
Вопрос
Я создал HttpCookie для совместного использования данных на поддомене.
HttpCookie cookie = new HttpCookie("sessionGUID");
cookie.Value = value;
cookie.Domain = ".example.com";
Response.Cookies.Set(cookie);
Я небрежно предположил, что, поскольку это файл cookie сеанса (без срока действия), он истекает вместе с моим сеансом ASP.NET. Конечно, для браузера это файл cookie «сеанса браузера», который не связан с сеансом ASP.NET. Р>
Что я хочу сделать, так это прекратить использование файлов cookie «сеанса браузера» вместе с сеансом ASP.NET.
Я думаю, мне просто нужно установить Expires на то же значение, что и сеанс ASP.NET. Как бы я определил это программно? Р>
Решение
Если они просто должны быть рядом, то примерно так:
int expirationMinutes = Session.Timeout;
if (System.Web.HttpContext.Current.Response.Cookies["monster"]!=null)
{
System.Web.HttpContext.Current.Response.Cookies["monster"].Expires =
DateTime.Now.AddMinutes(expirationMinutes);
}
Таймер сеанса сбрасывает все, что пользователь отправляет или получает, поэтому, поскольку код выполняется на сервере прямо сейчас, оставшееся время в текущем сеансе - Session.Timeout, скажем, 20 минут.
Через 20 минут файл cookie не будет принят, и вам придется выпустить новый.