2010-06-16 4 views
-1

Bonjour, J'ai quelques problèmes avec l'état de la session ASP.NET MVC qui n'expire pas après l'implémentation du code suivant et la mise en place des attributs sur les méthodes.Problème d'expiration de session dans ASP.NET MVC

public sealed class SessionActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpContext ctx = HttpContext.Current; 
     //Check if session is supported 
     if (ctx.Session != null) 
     { 
      //Check if the session is new 
      if (ctx.Session.IsNewSession) 
      { 
       //If it says it is a new session but an existing cookie exists 
       //then it must have timed out 
       string sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"]; 
       if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId", StringComparison.OrdinalIgnoreCase) >= 0)) 
       { 
        //Redirect to the login page 
        ctx.Response.Redirect("~/Home/Index", true); 
        ctx.Response.End(); 
       } 
      } 
     } 
     base.OnActionExecuting(filterContext); 
    } 
} 

Le problème est que la demande de redirection ne sont pas en cours d'exécution et l'action qui a SessionActionFilter Attribute exécute. Cette méthode utilise des variables de session qui ont expiré et des résultats erronés.

Quelqu'un peut-il dire ce qui me manque?

Merci beaucoup d'avance !!

+1

Je suis curieux de savoir à quoi exactement vous utilisez la session? –

Répondre

0

Nous stockons des données qui sont utilisées dans nos vues !! Une mise à jour de plus, j'ai pu exécuter ce morceau de code qui fonctionne maintenant bien. Cependant, je suis un peu sceptique quant à l'utilisation des cookies et j'ai besoin de transformer ce code pour travailler aussi pour des sessions sans cookie. Comment est-ce possible?