Como fazer um cookie de sessão ASP.NET expira com o ASP.NET HttpSession?
-
19-08-2019 - |
Pergunta
Eu criei um HttpCookie, a fim de compartilhar dados através de um subdomínio:
HttpCookie cookie = new HttpCookie("sessionGUID");
cookie.Value = value;
cookie.Domain = ".example.com";
Response.Cookies.Set(cookie);
I descuidadamente assumido uma vez que é um cookie 'sessão' (sem expira) que iria expirar junto com minha sessão ASP.NET. Claro que para o navegador este é um cookie 'sessão do navegador' e não está ligado à sessão ASP.NET.
O que eu quero fazer é expiram estes cookies 'de sessão do navegador' junto com a sessão ASP.NET.
Eu acho que só precisa definir Expira para o mesmo valor que a sessão ASP.NET. Como eu poderia determinar isso programaticamente?
Solução
Se eles só precisam de estar perto, em seguida, algo como isto:
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);
}
A sessão temporizador reinicia tudo o usuário envia ou recebe, por isso desde código está em execução no servidor no momento, o tempo restante da sessão atual é Session.Timeout, digamos 20 minutos.
Em 20 minutos, o cookie não será aceito e você terá que emitir um novo.