2009-10-21 6 views
2

J'ai donc un site Web où j'utilise des événements de début et de fin de session pour suivre et limiter les instances ouvertes de notre application web, même sur le même ordinateur. Lors du déchargement de la page, j'appelle une méthode de page activée par session qui s'appelle alors session.abandon.abandonner la session dans asp.net sur le navigateur fermer..aider cookie de session

Ceci déclenche l'événement de fin de session et efface la variable de session mais ne tue malheureusement pas le cookie de session !! par conséquent si d'autres instances de navigateur sont ouvertes il y a des problèmes parce que leur état de session a juste disparu ... et pire encore quand j'ouvre le site avec la session zombie non encore expirée, j'obtiens plusieurs événements de début et de fin de session sur toute publication ultérieure. Cela arrive sur tous les navigateurs. alors comment puis-je tuer vraiment la session (force le cookie expirer)

Répondre

0

Si vous utilisez FormsAuthentication vous pouvez utiliser:

FormsAuthentication.SignOut(); 
+0

va également supprimer ce cookie de session? – Tuviah

0

FormsAuthentication.SignOut(); expire le cookie d'authentification, mais ne supprime pas le cookie de session avant le délai spécifié dans web.config pour sessiontate. Si vous souhaitez supprimer la session immédiatement, expirez manuellement le cookie de session comme indiqué ci-dessous.

var myCookie = nouveau HttpCookie ("ASP.NET_SessionId") {Expires = DateTime.Now.AddDays (-1D)}; Response.Cookies.Add (myCookie);

1

J'ai toujours utilisé ce pour vous assurer que la session de l'utilisateur a disparu:

HttpContext.Current.Session.Abandon();