Esta pregunta ha sido publicada en línea más de 1000 veces. La mejor forma de manejar el tiempo de espera de las cookies no persistentes con el navegador abierto es agregar un valor clave para el tiempo de espera. El código siguiente se utiliza para un valor de clave de identificación de usuario de inicio de sesión y seguridad de encriptación (no incluida) para la compatibilidad del navegador. No uso autenticación de formularios.
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);
Al comprobar la clave de galletas valor de uso:
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
}
he encontrado problemas de compatibilidad utilizando autenticación de formularios y Google Chrome.
Esto no está realmente relacionada con mi pregunta. Imagínese si la sesión se deshabilitó y aún quería crear una cookie Http que se va cuando el navegador está cerrado/no está escrito en el disco, etc. Sin embargo, creo que algunas de las otras respuestas están en el camino correcto. – MatthewMartin