IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Variable de session non sauvegardée


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut Variable de session non sauvegardée
    Bonjour tout le monde,

    Je travail avec des variables de session pour passer entre deux pages des informations.

    J'ai créer une fonction pour centraliser mes redirections avec message que j'apelle ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utility.RedirectionWithText(Page, "~/test/", "Votre demande a bien été envoyée", "Confirmation");
    et voici monde code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Utility
    {
        public Utility()
        {
     
        }
     
        static public void RedirectionWithText(Page Page, string url)
        {
            Page.Session.Add("Redirect-URL", Page.ResolveUrl(url));
            Page.Response.Redirect(Page.ResolveUrl("~/Ok.aspx"));
        }
    }
    Si je fais un break juste avant le Page.response.redirection(...), je vois que ma session à bien le "Redirect-URL" mais quand je suis sur la page ~/Ok.aspx, je vois correctemen ma session sauf que "Redirect-URL" n'est pas présent. C'est comme si je travaillais sur une copie de ma session quand je le passe en paramètre alors que le c# travail avec une sorte de pointeur non ?

    J'ai tenté d'utiliser HttpContext.Current.Session à la place de Page.Session mais le résultat est le même.

    Pouvez-vous me dire si je dois faire une sorte de Session.Save() pour forcer la sauvegarde de la session où alors il faut revoir toute ma méthodologie ?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    Essaye plutot avec HttpContext.Current.Session.Add("taclé", "tavaleur");

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    J'ai tenté cette solution mais elle donne le même résultat

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je ne suis pas du tout un pro de asp.net mais essaye de mettre un break point sur l'event de fin de session dans le global.asax et vérifie que tu n'y passes pas.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    Quand j'arrive sur ma 2éme page, j'ai encore toutes les autres var de session qui sont déclarées à l'ouverture de session dans le global.asax. Il ne cloture donc pas ma session.

    C'est vraiment juste la var ajoutée par ma classe Utility.

    Quand je fais un break juste avant le "Page.Response". J'ai bien l'enssemble des variables de session au complet mais il semble ne pas sauvegarder les derniéres modification.

    Merci pour toutes ces pistes !

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Il faut bien comprendre le mécanisme des sessions.
    Les sessions ca se base sur les cookies. Quand tu mets quelque chose en session il y a donc un cookie qui est crée chez le client. Or la création de ce cookie se fait via les header de la réponse http. Ce qui se passe ici, c'est qu'en envoyant un Redirect, il envoie une réponse de http 302 de redirection mais cette réponse soit elle ne contient pas le setcookie ou alors il n'est pas interprété par le navigateur (je sais plus trop en détails).
    Conclusion, si tu settes qqchose, ne fait pas de redirect juste derrière.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    Mais le cookies ne comporte que l'ID de session non ? Donc si je demande à l'ASP de modifier des informations sur la session, cette modification sera réalisé coté serveur. le cookies ne devrait du coup pas changer de valeur.

    J’avoue avoir lut dans le MSDN qu’il stockait coté client les informations mais quand je regarde le contenu de mon cookies je me dis qu’il ne stocke que l’ID :


    Je joins par sécurité ma config pour la session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="InProc" timeout="60"/>
    Images attachées Images attachées  

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Il faut bien comprendre le mécanisme des sessions.
    Les sessions ca se base sur les cookies. Quand tu mets quelque chose en session il y a donc un cookie qui est crée chez le client.
    Euh, sauf erreur de ma part, (mes souvenirs asp.net sont lointains) ce n'est pas tout à fait cela. Les sessions se basent sur les cookies, ok (encore que ce ne soit pas obligatoire, on peut utiliser des sessions "cookieless"), mais les variables de session n'ont rien à voir avec les cookies (sinon, il n'y aurait pas nécessité à les persister au niveau du load-balancing).

    D'ailleurs les variables de sessions ne sont pas transmises au client, contrairement au viewstate.

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Euh, sauf erreur de ma part, (mes souvenirs asp.net sont lointains) ce n'est pas tout à fait cela. Les sessions se basent sur les cookies, ok (encore que ce ne soit pas obligatoire, on peut utiliser des sessions "cookieless"), mais les variables de session n'ont rien à voir avec les cookies (sinon, il n'y aurait pas nécessité à les persister au niveau du load-balancing).

    D'ailleurs les variables de sessions ne sont pas transmises au client, contrairement au viewstate.
    Effectivement c'est pas assez détaillé de ma part. C'est l'identifiant qui est dans le cookie. Le plus simple c'est de regarder avec Fiddler sans le Redirect puis avec le Redirect si il y a une différence.

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    J'ai trouvé le pourquoi mais pas encore le comment !

    IE9 refuse mon cookie de session qui ne comporte que l'ID (pour information). Il relance donc à chaque page une nouvelle session et perd mes données.

    Je vous tiens au courrant au cas où quelqu'un aurrait le même problème

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Par défaut
    Bon suite a un reset des params de IE9, tout est revenu à la normal

    Merci à vous tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 27
    Dernier message: 16/04/2013, 11h09
  2. variable de Session non trouvée
    Par reman dans le forum Langage
    Réponses: 6
    Dernier message: 07/01/2009, 10h25
  3. Variable de sessions non transférées
    Par MaT$oN dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2008, 14h04
  4. Variables de sessions non transmises en local
    Par cerveza dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2007, 21h34
  5. Variable de session non rafraîchie
    Par Akela dans le forum Langage
    Réponses: 6
    Dernier message: 17/10/2007, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo