2017-06-08 6 views
1

J'installe un cookie comme ceci:date d'expiration du cookie ne fonctionne pas C#

protected void SetCookie(bool value, int expiration) 
{ 
    var cookie = Response.Cookies[COOKIE_NAME] ?? new HttpCookie(COOKIE_NAME); 
    cookie.Value = value.ToString(); 
    cookie.Expires = DateTime.UtcNow.AddDays(expiration); 
    Response.Cookies.Set(cookie); 
} 

Dans la fonction SetCookie, quand je visite le cookie sur la dernière ligne, l'expiration est fixée à la date de demain.

Cependant, lorsque je récupère ce cookie sur la prochaine chargement de la page:

var cookie = Request.Cookies[COOKIE_NAME]; 

le cookie existe, mais la date d'expiration est la valeur de date par défaut de 1/1/0001 12:00:00 AM

+1

En référence à votre premier bloc de code: Vous devriez * lire/récupérer * le cookie à partir de 'Request.Cookies', pas la réponse. – Igor

+0

@Igor Je pense que cela n'a pas d'importance puisque les attributs sont écrasés de toute façon. Comme écrit, je pense qu'il réutilise l'objet cookie si 'SetCookie' est appelé plusieurs fois. Personnellement, je supprimerais entièrement le contrôle et j'initialiserais toujours une nouvelle instance. – ryachza

+0

Avez-vous vérifié tout code côté client changeant la date d'expiration, comme un cookie peut être changé du côté client et peut-être cela est à l'origine du problème. – vivek

Répondre

0

Je crois que l'expiration est un client chose de côté. Le navigateur doit envoyer tous les cookies non expirés, mais n'envoie pas la date d'expiration (uniquement le nom et la valeur). Je pense que vous devriez re-définir et actualiser l'expiration sur chaque demande.

Ce fut la première référence de format que je trouve: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie

Si pour une raison quelconque, vous devez récupérer le côté serveur de données d'expiration, je l'inclure dans le contenu des cookies ou définir un cookie secondaire pour contenir cette information.