2009-04-04 9 views
1

J'utilise sessionstate stocké dans stateserver dans asp.net. J'ai un lien sur l'en-tête qui affiche l'identifiant de connexion des utilisateurs.gestion de session asp.net

Problème:

Lorsque la session expire dans StateServer mon application affiche toujours loginid et génère une erreur lorsque le code hits qui dépend de la valeur stockée en session.

On dirait que asp.net n'a aucune idée quand la session expire sur stateserver et continue à travailler sur la même session avec la valeur enregistrée dans le cookie dans le navigateur de l'utilisateur.

Pour résoudre ce problème dans une autre application, je vérifie la session avec chaque requête et expire la session de l'utilisateur si elle a expiré dans sessiontate.

Je ne suis pas sûr que je fais la bonne chose ici. Est-ce que asp.net n'est pas censé conserver les données de session sauvegardées dans les cookies synchronisés avec la session dans le serveur d'état?

Pourriez-vous expliquer quelle serait la meilleure pratique pour gérer cela?

Répondre

0

Si vous utilisez des formulaires Web ASP.Net, vous pouvez considérer l'événement Load de la page ou du contrôle pour vérifier si la session a expiré. Voici le code correspondant

if(Session["yourvar"] == null) 
    ShowError(); 
2

La bonne pratique consiste à «trouver» la session de l'utilisateur chaque fois que vous recevez une publication. Et à ce moment-là, si vous ne le trouvez pas, signalez une erreur indiquant que leur session a expiré et qu'ils doivent se reconnecter.

0

Merci pour toutes les réponses,

Par défaut ma valeur d'expiration de session pour l'authentification de forme étaient plus élevés que sessionstate. Cette session sur sessiontate expire et cause des problèmes. Je pense que garder la valeur d'authentification du formulaire un peu plus bas que sessiontate serait la meilleure pratique.