2009-06-06 9 views

Répondre

3
Session.Timeout=5 

signifierait que dans ce temps de 5 minutes. Je ne pense pas que vous pouvez définir ceci à l'infini, mais vous pouvez le définir à un nombre environ grand.

+0

Quelle est la valeur maximale que je peux définir? – George2

+1

"La valeur minimale autorisée est 1 minute et le maximum est 1440 minutes." - http://msdn.microsoft.com/en-us/library/ms525473.aspx – Chris

2

Vous pouvez spécifier une valeur Session.Timeout en minutes. Ou demandez à vos pages d'interroger le serveur toutes les n minutes (une fonction javascript le ferait, ou vous pouvez avoir un iframe fictif avec un contenu d'actualisation défini pour appeler une page ASP factice toutes les n minutes). Ceci est mieux (bien que l'interrogation puisse taxer votre serveur, ne pas interroger trop souvent) car si vous définissez le délai d'attente de votre session à une valeur très élevée (ou infinie ...), vous vous retrouverez avec asp écrasement avec une erreur de mémoire insuffisante (je suppose que le pool d'applications sera redémarré).

La session est maintenue active lorsque l'utilisateur appelle une page ASP sur votre application avant l'expiration du délai. Si votre utilisateur ferme son navigateur, votre application ne sera en aucun cas avertie et ASP devra attendre le délai pour nettoyer la mémoire. Cela signifie que la session restera en mémoire pendant n minutes après le départ de l'utilisateur, n étant le délai d'expiration.

Il n'est pas nécessaire d'avoir une session infinie (il peut être adressé par interrogation) et l'ajustement avec le paramètre timeout rendra votre application plus fragile. Si vous voulez stocker des informations pendant longtemps (fondamentalement, pour toute la durée de vie de votre application), vous feriez mieux d'utiliser l'objet Application, qui est un dictionnaire comme Session mais qui est un singleton et accessible par quelqu'un sur le serveur.

+0

Merci @Yann! 1. Je veux confirmer avec vous L'objet Application n'expire jamais en tant qu'objet de session? 2. Je pense que la meilleure façon de suggérer est de mettre un peu de temps et d'actualiser la page en javascript ou en rafraîchissant le contenu. Et la raison est la mémoire de session sera libérée au côté du serveur en temps opportun? Ma compréhension est-elle correcte? 3. "Si vous définissez le délai d'attente de votre session à une valeur très élevée (ou infinie ...), vous vous retrouverez avec un crash de l'ASP avec une erreur de mémoire insuffisante (je suppose que le pool d'applications sera redémarré)." - provoqué par une longue valeur de délai qui maintient la session dans la mémoire du serveur longtemps? – George2

+0

4. Il n'y a aucun moyen de définir une valeur infinie pour le temps d'expiration dans la session ASP classique (je veux dire le langage ASP classique et le runtime ne le supporte pas directement)? – George2

+0

L'application est effacée si et quand l'application est retirée du pool d'applications, si le trafic du site est relativement faible, elle est supprimée du pool d'applications et toutes les données de l'objet Application sont perdues. Si vous voulez y persister, vous devez y stocker une base de données ou un autre stockage back-end – RobV

Questions connexes