OVH Cloud OVH Cloud

SessionID

11 réponses
Avatar
alan
Bonjour.
Je souhaiterais savoir comment déterminer si un SessionID est toujours
valide(si la session existe toujours)
Merci pour vos réponses

1 réponse

1 2
Avatar
Patrice
Non .Je n'ai plus la demande de départ totalement en tête mais si tu as des
données dans la base, il faut voir avec la personne en charge de la base
pour pouvoir :
- enregistrer la date/heure de la dernière requête à une page faite par une
session donnée (je ne sais pas si cette possibilité existe déjà dans ta
base)
- avoir une tâche qui efface les données des sessions dont le temps écoulé
depuis le dernier accès est supérieure au timeout de session
(c'esst ce que fait le fournisseur SQL pour gérer les sessions).

Eventuellement, il serait possible de stocker cela par exemple dans une
variable d'application et de faire la requête de destruction à des moments
"choisis" (mais tu as peut-être besoin d'impliquer le DBA pour pouvoir avoir
une requête qui détruit les données d'une session ou existe t'elle déjà ?)

Enfin une autre solution serait le Session_End mais il est généralement
réputé ne pas toujours se produire donc il est peut-être préférable de ne
pas dépendre de cet évènement pour le nettoyage...

--
Patrice

"alan" a écrit dans le message de
news:
Peut-être existe-t-il une autre solution... Est-il possible de récupérer
l'objet Session, si on a le SessionID?

"Sebastien Bovo [MS]" a écrit :

> Bonjour,
>
> Non, l'infrastructure ASP.NET ne te fournit pas les SessionID toujours
> valide.
>
> Un point, si tu souhaites nettoyer les tables temporaires d'un


utilisateur
> toutes les 10 min par exemple, c'est que tu as fixé le timeout de


session a
> moins de 10 min. Est-ce correct ?
>
> Dans le cas où tu tiens a jour une liste des SessionID et qu'à chaque
> requete de l'utilisateur tu rafraichis le dernier accès pour le


SessionID
> alors à tout moment tu sais quand un SessionID n'est plus utilisé. C'est


à
> dire à la l'heure du dernier accès + le timeout de session.
>
>
> --
> Cordialement,
>
> Sebastien Bovo
> Microsoft France
> ----------
> Ce message est fourni en l'état, sans garantie d'aucune sorte, et ne


vous
> confère aucun droit. Vous assumez tous les risques liés à son


utilisation.
>
>
> "alan" wrote in message
> news:
> > Je vais donc reposer la question originale :
> > Est-il possible d'interroger le serveur ASP.NET de manière à savoir si


un
> > SessionID est toujours valide?
> > Répondre SVP par oui : comment ou non
> > Merci par avance.
> >
> > Pour te répondre : je ne sais pas comment utiliser le gestionnaire de
> > session SQL pour la bonne et simple raison que je ne sais pas comment,


et
> > que
> > je n'ai pas accès à SQL. On me donne le nom des procédures stockées,


leur
> > paramètres et c'est tout. Je n'ai pas les autorisations pour aller
> > trafiquer
> > en SQL.
> > "Patrice" a écrit :
> >
> >> Je vais essayer de m'expliquer plus clairement :
> >>
> >> 1) Il faut d'abord savoir qu'une session ASP.NET se termine lorque le
> >> serveur n'a aucune nouvelle du client pendant un certain temps (20
> >> minutes
> >> par défaut). et non pas par exemple lorsqu'un utilisateur ferme le
> >> navigateur ce dont le serveur n'a aucunement connaissance.
> >>
> >> 2) Si une procédure détruit les infos dont a besoin un client si l'on


a
> >> pas
> >> de nouvelle de lui depuis par exemple 25 minutes, cette procédure ne
> >> supprimera donc que des données correspondant de toute façon à des
> >> sessions
> >> expirées (il faut bien sûr renouveller la date/heure stockée dans la


base
> >> à
> >> chaque fois que le client se manifeste et non pas uniquement la


première
> >> fois pour qu'il puisse naviguer des heures durant si il le souhaite).
> >>
> >> 3) Maintenant cette procédure peut tourner par exemple toutes les 10
> >> minutes
> >> et fera donc le nettoyage au plus 10 minutes après la "déconnexion"
> >> (c'est-à-dire l'expiration du timeout de session) du client.
> >>
> >> Ta première phrase me parait obscur : si le client continue de


naviguer
> >> sur
> >> le site son sessionID ne sera pas détruit or je dois nettoyer etc...


Si
> >> le
> >> client continue de naviguer sur le site, sa session est toujours en


cours
> >> et
> >> donc le nettoyage ne se fait pas ce qui me parait normal (c'est


seulement
> >> après la "déconnexion" (donc si l'utilisateur ne navigue plus sur le
> >> site)
> >> que le nettoyage se fera...)
> >>
> >> Bon courage.
> >>
> >> (N.B. pourquoi ne pas utiliser le fournisseur de session SQL Server


que
> >> tu
> >> sembles être en train de récréer ?)
> >>
> >> Patrice
> >>
> >>
> >> "alan" a écrit dans le message de
> >> news:
> >> > Là n'est pas la question, mais je vais répondre :
> >> > Si le client continue de naviguer sur le site, son sessionID ne


sera
> >> > pas
> >> > détruit, or je dois nettoyer au plus quelques minutes (10 max)


après la
> >> > deconnexion du client. Une procédure stockée (ou un 'job' SQL) est


trop
> >> > arbitraire...
> >> > j'utilise donc un systeme dans mon application ASPX qui doit se


charger
> >> > du
> >>
> >> > nettoyage de mes tables temporaire, mais je dois m'assurer que le
> >> SessionID
> >> > n'est plus utilisé. Je ne peux pas risquer par un job ou une


procédure
> >> > stockée de détruire des informations dont le client pourrait encore
> >> > avoir
> >> > besoin, sous prétexte que cela à plus de 10 mn! J'imagine la tête


du
> >> client
> >> > qui doit tout ressaisir... (le client étant mon patron :=)))
> >> >
> >> > "Patrice" a écrit :
> >> >
> >> > > Je disais donc qu'avec ton propre stockage tu peux tout de même
> >> > > garder
> >> le
> >> > > même principe c'est-à-dire :
> >> > > - garder la date/heure du dernier accès aux variables de session


en
> >> > > base
> >> > > - avoir une procédure stockée executée régulièrement et qui


supprime
> >> > > les
> >> > > sessions en base qui sont plus vieilles que le timeout
> >> > >
> >> > > --
> >> > > Patrice
> >> > >
> >> > > "alan" a écrit dans le message


de
> >> > > news:
> >> > > > Je n'utilise pas le fournisseir de session SQL Serveur. Je me


sers
> >> > > > du
> >> > > > HttpSessionState.SessionID pour identifier les données que
> >> > > > j'integre
> >> dans
> >> > > une
> >> > > > table temporaire. Lorsque le SessionID n'est plus utilisé, je
> >> > > > souhaite
> >> > > faire
> >> > > > DELETE TMP_INTERNET WHERE SessionId MaVariableSessionNonUtilisée
> >> > > >
> >> > > > Le problème, c'est comment savoir si MaVariableSession est en


cours
> >> > > > de
> >> > > > fonctionnement ou pas. Là est la question.
> >> > > > Est-ce que dans mon objet application, il existe une liste des
> >> sessionID
> >> > > en
> >> > > > cours... Ou tout autre moyen de determiner si une session


associée
> >> > > > à
> >> un
> >> > > > SessionID est terminée ou non.
> >> > > >
> >> > > > Merci quand même.
> >> > > >
> >> > > > "Patrice" a écrit :
> >> > > >
> >> > > > > Si tu utilises le fournisseur de session SQL Server, il


devrait y
> >> avoir
> >> > > un
> >> > > > > job qui déclenche une procédure de nettoyage.
> >> > > > >
> >> > > > > Si tu gères ton propre stockage, tu peux utiliser un principe
> >> équivalent
> >> > > (en
> >> > > > > gros, la date/heure du dernier accès est stockée et une


procédure
> >> > > > > de
> >> > > > > nettoyage peut alors supprimer les données qui sont plus


vieilles
> >> que le
> >> > > > > timeout de session).
> >> > > > >
> >> > > > > --
> >> > > > > Patrice
> >> > > > >
> >> > > > > "alan" a écrit dans le


message
> >> > > > > de
> >> > > > > news:
> >> > > > > > C'est exact. Le but de ce test est de supprimer dans une


base
> >> > > > > > de
> >> > > données
> >> > > > > > toutes les informations saisie par un utilisateur lorsque


sa
> >> session
> >> > > > > n'existe
> >> > > > > > plus. L'évènement Session_End ne se produisant pas à tous


les
> >> coups .
> >> > > > > >
> >> > > > > > "Sebastien Bovo [MS]" a écrit :
> >> > > > > >
> >> > > > > > > Bonjour,
> >> > > > > > >
> >> > > > > > > Quel est le but de ce test ? J'imagine que tu veux faire


ce
> >> > > > > > > test
> >> en
> >> > > > > dehors
> >> > > > > > > du code éxécuté pour l'utilisateur ?
> >> > > > > > >
> >> > > > > > > --
> >> > > > > > > Cordialement,
> >> > > > > > >
> >> > > > > > > Sebastien Bovo
> >> > > > > > > Microsoft France
> >> > > > > > > ----------
> >> > > > > > > Ce message est fourni en l'état, sans garantie d'aucune
> >> > > > > > > sorte,
> >> et ne
> >> > > > > vous
> >> > > > > > > confère aucun droit. Vous assumez tous les risques liés à


son
> >> > > > > utilisation.
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > "alan" wrote in message
> >> > > > > > >


news:
> >> > > > > > > > Bonjour.
> >> > > > > > > > Je souhaiterais savoir comment déterminer si un


SessionID
> >> > > > > > > > est
> >> > > toujours
> >> > > > > > > > valide(si la session existe toujours)
> >> > > > > > > > Merci pour vos réponses
> >> > > > > > >
> >> > > > > > >
> >> > > > > > >
> >> > > > >
> >> > > > >
> >> > > > >
> >> > >
> >> > >
> >> > >
> >>
> >>
> >>
> >>
>
>
>


1 2