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 :

Verifier si une session existe à l'aide du sessionID


Sujet :

ASP.NET

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Verifier si une session existe à l'aide du sessionID
    Salut tout le monde,

    Ca fait un moment que je me gratte la tête.
    Sur un web dev, j'enregistre les session ID de mes utilisateurs lorsqu'ils ouvrent un doc qui est en Bdd SQL.
    Cela me permet de 'bloquer' le doc pour éviter qu'un autre user le traite.
    Le pb, c'est que lorsque la session prend fin, il me faut libérer le document.
    J'ai essayé avec le global.asax en mettant ma session state en inProc mais ça ne fonctionne pas bien, j'ai certains doc qui restent bloqués à jamais.

    Donc comme j'ai les sessionID en Bdd, n'existe-t-il pas une possibilité de vérifier si le sessionID est toujours existant ? Vérification lancée par un timer ou au application/session start du global.asax (qui semble mieux fonctionner) ?

    Si qq'un a une solution pour ce pb ca me faciliterait la vie et en plus ca me permettrait de me coucher un peu moins con ce soir

    Xam666

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Tu as des problèmes avec l'évènement Session_End() du global.asax?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Il n'est pas possible de tester les sessionID car ça touche à la sécurité.

    Par contre, il y a un event SessionEnd dans le Global.asax. Il pourrait te permettre de faire le traitement.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses guys

    J'ai tenté d'utiliser le session_end en y insérant une requete T-SQL mais la requête n'est pas exécutée.
    La session est bien terminée (pour le test j'avais mis le fin de session à 1 minute) mais la modif de ma Bdd n'est pas lancée.

    Je ne comprends pas pourquoi.

    J'ai essayé de mettre ca dans mon webconfig mais pas mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <system.web>
          <sessionState mode="InProc" cookieless="true" timeout="20"/>
          </sessionState>
       </system.web>

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    es tu sûr que ton session_end est invoqué ?
    vu ta config, il faut 20 minutes.

    a moins de faire par toi même une Session.Abandon()

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    bah non justement je ne suis pas certain que mon sessin_end soit bien lancé à chaque fin de session.

    j'avais lu qq part des éléments sur le session.abandon mais je ne vois pas comment l'utiliser...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    il suffit d'appeler la méthode.
    Mets aussi un point d'arrêt dans le session_end pour voir le résultat en débug

  8. #8
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Il me semble que c'est un problème connu, à savoir que le Session_End() ne s'exécute pas toujours dans le Global.asax.

    Exemple simple pour tester : Utiliser une variable Application (avec un petit lock lors de l'utilisation) :
    • lors de l'Application_Start on initialise la variable à 0

    • à chaque Session_Start on incrémente la variable

    • à chaque Session_Stop on décrémente la variable


    On s'aperçoit que le Session_End n'est pas toujours déclenché

    En espérant t'avoir éclairé sur ce problème.

  9. #9
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Pour reprendre le problème de départ. Pourquoi ne pas faire un lock de ton fichier sur sur une date plutôt. Lorsque Mr A récupère le document X. On lui passe une date + 20 minutes pour consulter ce fichier. Tant que A reste connecté en faisait ceci ou cela on réactualise la date de son verrou.

    Si B veut accéder a ce document X alors il lui faudra attendre la fin du verrou de A.


    Pour le problème de session_end, j'ai entendu parler de ce problème , mais je ne l'ai jamais expérimenté réellement, toujours réussi a faire fonctionner mon code avec Session_end. ( je touche du bois).

Discussions similaires

  1. Verifier si une donnée existe
    Par ririch dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 22/04/2009, 14h31
  2. Verifier qu une ligne existe ou pas pour insertion
    Par ZashOne dans le forum Accès aux données
    Réponses: 8
    Dernier message: 25/02/2009, 00h55
  3. [MySQL] Verifier si une colonne existe
    Par zesavantfou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/11/2008, 21h20
  4. Comment verifier qu'une feuille existe
    Par gilles06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2008, 09h22
  5. Comment verifier si une table existe deja
    Par amine_en_france dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/03/2007, 17h21

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