2009-03-31 4 views
0

Je suis très confus quand il s'agit de ce qui détermine réellement le délai d'expiration de la session.Comment forcer un délai d'attente de 20 minutes pour les sessions?

L'application Web doit permettre un «délai d'inactivité» de 20 minutes avant la journalisation (ou le rejet) des utilisateurs. J'ai essayé différents paramètres sur les processus de travail sessionState et Recycler dans IIS. Le délai d'attente reste trop court et, pour autant que mes tests primitifs quit-n-dirty l'ont montré, un peu aléatoire.

J'ai lu quelque part que le délai par défaut est de 20 minutes, mais dans mon application, il semble être plus proche de cinq. Y a-t-il des moyens faciles de changer cela? L'application exécute .NET 3.5 sur IIS 6.

EDIT: Je viens de me rendre compte que Entity Framework peut avoir quelque chose à voir avec le problème, car le contenu de l'utilisateur est maintenu en tant que contexte dans l'infrastructure de l'entité. Y a-t-il une limite de temps pour combien de temps une entité est détenue?

Répondre

6

L'utilisateur sera déconnecté en fonction de vos paramètres d'authentification dans le fichier web.config.

Le délai de session sera défini dans votre balise de session dans le fichier web.config.

Si elles sont différentes, vous verrez des résultats "intéressants".

+0

Le sessiontate seul ne semble pas faire l'affaire. Quelle est la différence entre les deux, et devrait/pourrais-je utiliser les deux, s'ils ont la même valeur? –

+0

Dans votre fichier web.config, dans votre paramètre d'authentification, assurez-vous qu'il est également défini sur 20. Êtes-vous déconnecté ou une erreur de session? – cjk

+0

La session a semblé "oublier" l'entité qui contenait des informations d'utilisateur. J'ai joué avec beaucoup de paramètres et je l'ai résolu à la fin. Votre réponse a aidé, alors vous obtenez le tag de réponse. ;) –

5

http://msdn.microsoft.com/en-us/library/ms972429.aspx

Si vous regardez dans le web.config vous pouvez écrire quelque chose comme ça

<configuration> 
    <sessionstate timeout="20" /> 
</configuration> 

et là, vous pouvez vous régler le délai ..

+0

Merci pour votre réponse, mais comme je l'ai écrit dans ma question, j'ai déjà essayé sessiontate, et n'obtiendra toujours pas le résultat souhaité. –

+0

bien utilisez-vous le système de connexion inbuild ou avez-vous écrit vous-même et le temps de session se comporte-t-il de la même manière dans le serveur web de débogage? – Peter

+0

La connexion est spécifique à ce système - lors de la connexion, le nom d'utilisateur et le mot de passe sont vérifiés par rapport à la base de données, et si une entité est renvoyée, l'utilisateur est connecté comme usertype dans l'entité. Je viens de réaliser que Entity Framework pourrait avoir quelque chose à voir avec ça. –

1

Utilisez le délai d'attente sessionstate. Vous ne souhaitez pas utiliser Recycle Worker, car toutes les sessions associées à ce travailleur seront recyclées toutes les N minutes. C'est une bonne idée de définir une valeur très élevée pour Recycle Worker si vous utilisez la variable de session.

+0

+ 1 pour expliquer Recycle Worker, mais comme je l'ai écrit dans ma question, j'ai essayé sessiontate sans obtenir le résultat souhaité. –