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 :

[SESSION ASP.NET]Perte de session après le Page_Unload


Sujet :

ASP.NET

  1. #1
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut [SESSION ASP.NET]Perte de session après le Page_Unload
    Bonjour,
    J'ai un souci avec un objet Session et je n'arrive pas à en trouver la cause, même si j'ai des soupçons qui ne sont pas fondés.

    je vais essayer de mettre le plus de détails possible.
    j'ai 3 pages, disons Login.aspx, P1.aspx et P2.aspx.

    j'arrive sur Login.aspx et je suis directement dirigé vers P1.aspx (après le login evidement)
    P1.aspx me sert de page de recherche avec consultation d'entête de document, ensuit j'ai la possibilité de selectionné les docs dont je veux voir le détails et là je suis dirigé vers P2.aspx

    dès le départ j'ai une session qui contient diverses données necessaires à la navigation et à la recherche.

    Malheureusement à un moment donnée je pers ma session donc j'ai un Session("UserInfos") = Nothing juste après le passage dans le Page_Unload

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
            If MyConn.State = ConnectionState.Open Then
                MyConn.Close()
            End If
            If Not cUserInfos Is Nothing Then
                If cUserInfos.ContainsKey("UserTempFullPath") Then
                    cUserInfos.Remove("UserTempFullPath")
                End If
            End If
            Session("UserInfo") = cUserInfos
    End Sub
    cUserInfos => HashTable je préfère avoir une session qui contient à HashTable que 10 sessions différentes plus simple à gérer.

    en fait j'ai ce problème lorsque je reviens de la P2.aspx vers P1.aspx (avec un Response.Redirect), il passe bien la première fois dans le Page_load et puis une fois passé dans le Page_Unload (ci-dessus) la session est perdue ...

    ma première question est :
    - Avez-vous bien compris l'explication....?
    - Ensuite, pour quelle(s) raison(s) aurais-je perdu cette session ?
    - Que puis-je utiliser d'autres que le Response.Redirect pour revenir en arrière? (rien d'après mes premières recherches)

    merci à tous

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not cUserInfos Is Nothing Then
                If cUserInfos.ContainsKey("UserTempFullPath") Then
                    cUserInfos.Remove("UserTempFullPath")
                End If
            End If
    Comment tu l'initialises cUserInfos?

  3. #3
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    je viens de remarqué que je n'ai pas indiqué ce détail
    cUserInfos est une variable Private Globale et elle est initialisée dans le Page_load, si bien sur la session n'est pas null

    en fait le problème vient juste après l'execution du Page_Unload et le Page_load qui s'éxécute avant un événement Button_Click

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Bah tu mets un If Not IsPostBack dans le PageLoad si tu vas pas executer ce code sur un ButtonClick

  5. #5
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    en fait le session est déjà perdue avant d'arriver au IsPostBack
    dans le cycle des événements, si on arrive la première fois sur la page (IsPostBack = False) :
    1.1. Page_Load (je ne parle pas des autres pour ne pas surcharger)
    1.2. Page_Unload

    et lorsqu'on clique sur un bouton c'est le même cycle de traitement, avec en plus le traitement du Control Event
    2.1. Page_Load
    2.2. Control Event
    2.3. Page_Unload

    bien moi mon problème vient entre le 1.2 et le 2.1 après avoir cliqué sur un bouton

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Je pense que c'est le Response.Redirect le fautif.
    Essaye la surcharge qui prend un booleen en 2ème paramètre (en mettant true puis false pour voir)

  7. #7
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    Malheureusement je viens d'essayer mais ça ne change rien

    si je mets un BreakPoint dans le Globla.asax au niveau de Session_End, il passe bien dedans mais je ne sais pas pq

    j'ai même modifier le Timeout de la session...

    je ne comprends pas !!!!

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Est-ce que t'as le meme probleme avec un Server.Transfer au lieu du Response.Redirect (je sais que c'est pas tout à fait la meme chose mais c'est pour tester ^^)

  9. #9
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    En fait après d'autres tests ça fonctionne avec la surcharge de Redirect(string, bool) mais je n'arrive qd mm pas à comprendre pq il fait ça ???

    est-ce qu'il ne sait pas récupérer une Session si la page d'où il vient n'est pas "Unloadée" ?

    en tout cas merci pour le conseil et je vais qd mm essayer le server.transfer

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Un Response.Redirect cause une exception car ça annule le thread en cours.
    Je crois que la surcharge avec un bool permet d'éviter ça

  11. #11
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    c'est dommage que ce ne soit pas géré par défaut pcq c'est vrai que ce n'est pas propre d'avoir ça...
    du coup je l'ai remis partout où j'avais un Redirect

    en tout cas Merci pour les infos

    ps : est-ce que tu connais bien IIS, pcq j'ai un autre souci avec mon appli ?

    http://www.developpez.net/forums/sho...d.php?t=422645

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

Discussions similaires

  1. ASp.net - Perte de session
    Par dumber dans le forum ASP.NET
    Réponses: 0
    Dernier message: 19/11/2009, 16h10
  2. [c#][asp.net]variable de session type tableau multidim
    Par chorokari dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/07/2008, 22h34
  3. [ASP.NET/C#] Récupérer session côté serveur
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/02/2007, 16h03
  4. Réponses: 2
    Dernier message: 14/02/2007, 11h34
  5. [VB.NET] Perte de session entre 2 projets
    Par TekP@f dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/05/2005, 09h12

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