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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top