2010-03-10 5 views
0

J'ai un problème avec la session dans mon application web (asp.net mvc rc2). l'application fonctionne bien sur asp.net mvc rc1.ASP.NET MVC RC2 - Bug de gestion de session?

i utiliser le code de suivi pour le traitement de délai d'attente de session:

if (cnt.Current.Session != null) 
     { 
      if (cnt.Current.Session.IsNewSession) 
      { 
        string cookie = cnt.Current.Request.Headers["Cookie"]; 
        if ((null != cookie && (cookie.IndexOf("ASP.NET_SessionId") >= 0)) 
        { 
         return true; 
        } 
      }  
     } 

quand je devient un délai d'attente de la session, utilisez la méthode FormsAuthentication.SignOut(); pour l'utilisateur une redirection vers la déconnexion du loginPage. après la nouvelle connexion est cnt.Current.Session.IsNewSession toujours vrai !! (BUG?) sur rc1 fonctionne très bien.

+0

Testez-vous sur Cassini ou IIS? Il ne fonctionne pas en cassini mais travaillera sur IIS – chugh97

Répondre

4

MVC 2 RC1 avait un bogue qui créait de manière incorrecte une nouvelle session pour chaque utilisateur. Le comportement correct (que présente MVC 2 RC2) est que la génération de session est différée jusqu'à la première fois que quelque chose est stocké dans la session de l'utilisateur.

Si vous ne stockez jamais rien dans Session, il ne sera jamais enregistré et IsNewSession retournera toujours vrai. Assurez-vous que vous mettez quelque chose dans Session si vous avez l'intention de l'utiliser. Sur une note connexe, si vous utilisez simplement ceci pour contrôler quand un utilisateur se déconnecte, pourquoi ne pas raccourcir l'expiration du cookie FormsAuth? Le délai d'expiration par défaut est de 2880 minutes (2 jours); vous pouvez le modifier dans la racine Web.config du site. De cette façon, vous n'avez pas du tout à faire avec Session.