La compréhension ASP.Net session de temps de la vie
Je suis confus au sujet de l'ASP ou ASP.Net session de temps de la vie (ou cycle de vie) des concepts. Plus particulièrement, mes confusions sont:
- Comment IIS décider quand une nouvelle session démarre et que la fin de la session? Surtout, comment ne IIS décider si une session se poursuit ou se termine lorsque nous appelons un code de redirection?
- Comment pouvons-nous définir le délai d'expiration de session? (Actuellement je ne connais que de définir à travers
web.config sessionState
article). - Est-il possible pour une session pour accéder à une autre session variables?
OriginalL'auteur George2 | 2009-06-04
Vous devez vous connecter pour publier un commentaire.
Session commence, car la demande ne contient pas un cookie de session ou le cookie de session, elle en contient plus de cartes à une session. Une session se termine par un), il a siégé au repos avec aucune autre demande de référencement pour le délai d'attente. b) Son délibérément abandonnée par le code. c) Dans les processus de session meurt lorsque le processus n'est, par exemple, lorsque l'application est recyclé.
Différentes façons de modifier le délai d'attente sont essentiellement modifiant le web.config tout de même ou un fichier de configuration à partir de laquelle la valeur est héritée.
Non, sauf si l'objet session est délibérément placé par le code quelque part qu'une autre session peut y accéder.
ASP.NET d'exécution gère l'ensemble de la création de session et cookie création pour vous. Fundementally vous pourriez Ne pas vraiment faire ca!!) maintenir un Dictionnaire statique<string, IHttpSessionState> coller une référence à chaque session de l'objet qu'il obtient de créer. À l'aide de certains de clés de la chaîne de votre invention, vous pouvez alors code qui s'exécute dans une session d'accès à l'objet de la session de l'autre. Je ne peux pas penser à une raison logique pour faire sur ce, je suis assez sûr qu'il ne finira pas bien.
Si la session est expirée, quelle est la valeur que nous récupère à partir d'une variable de session? Chaîne de caractères.Est-il vide?
Il sera Nulle. Je voudrais utiliser des chaînes de caractères.IsNullOrEmpty méthode pour tester sa valeur.
if (!Chaîne de caractères.IsNullOrEmpty(Session["AmILoggedIn") { //faire quelque chose au sujet de ne pas être connecté }
OriginalL'auteur AnthonyWJones
Session est généralement effectuée par la génération d'un identifiant unique dans un cookie sur la machine cliente. Normalement, c'est un cookie de session, de sorte que vous ne pouvez pas facilement l'obtenir. Lorsque vous visitez un site qui utilise les sessions, il semble de ce cookie. Si il ne le trouve pas, il en crée un nouveau, donc de la création d'une nouvelle session.
Une façon de définir le délai d'expiration est dans le web.la configuration, vous pouvez aussi le mettre dans IIS par aller à votre site web propriétés -> onglet répertoire de base ->bouton de Configuration -> Onglet Options -> d'expiration de la Session.
Vous ne serez pas en mesure d'accéder à quelqu'un elses les données de session.
1. Vous avez raison, même si vous ne les utilisez pas, le cookie sera présent si mis en place dans votre site web.config. 2.Votre les variables de session ne sera jamais disponible pour une autre session de navigateur. Si vous avez des variables que vous souhaitez conserver, entre les sessions, vous devez les mettre dans un physique cookie, avec une date d'expiration msdn.microsoft.com/en-us/library/ms178194.aspx 3. La durée des séances sont basées sur la dernière fois que le serveur a détecté aucune activité. La session restera active pour toujours si l'utilisateur continue d'utiliser.
Votre mondial.asax a deux session_begin et session_end méthodes que vous pouvez utiliser. Je ne sais pas si il existe un moyen de déterminer quand une session en cours expirera. Vous pouvez vous avez juste à prendre un datetime cachet de l'heure à laquelle la page a été envoyé au client, et ajouter 20 minutes, ou plus si vous l'augmenter.
1 et 3) Il a été un moment depuis que j'ai travaillé en ASP classique, mais je voudrais configurer votre délai d'expiration de session dans IIS, comme je l'ai mentionné dans mon premier post. session_end est asp.net spécifique, je ne me souviens pas qu'il y ait un classique asp équivalent. J'ai peut-être tort. 2) la raison en est parce qu'il y a deux types de cookies: les cookies de session et de physique des cookies. Les cookies de Session n'existent que dans la mémoire ram sur la machine cliente, et pas que physique, des cookies, vous pouvez parcourir. Lorsque l'utilisateur ferme son navigateur, les cookies de session sont automatiquement détruits.
Je ne suis pas 100% sûr de ce que vous demandez. Mais vous devez vous assurer qu'une variable de session existe avant d'essayer de tirer de la valeur. si(Session["KeyName"] != null) { mavariable = Session["KeyName"]; }
OriginalL'auteur AaronS
Vous pouvez définir d'expiration de la session par programmation avec:
OriginalL'auteur Daniel Serodio
N'oubliez pas les paramètres de pool d'applications too...by par défaut IIS (6 en tout cas) il recycle toutes les 120 minutes. Il est donc possible qu'une personne pourrait perdre leur session en moins de l'ensemble Session_Timeout valeur.
OriginalL'auteur Webjedi