2012-02-24 5 views
0

J'ai défini sessiontimeout dans le fichier web.config comme suit. Quelques fois ci-dessus le code fonctionne bien. Mais plusieurs fois la session a expiré automatiquement après 10 à 15 minutes.La session a expiré avant le délai

et cette erreur existe dans tous les navigateurs. Lorsque j'exécute la même application en utilisant .net sur mon ordinateur local, cela fonctionne très bien.

Veuillez noter que, je n'ai pas encore créé de fichier global.ascx.

+0

global.ascx n'est pas affact à cette raison ..sit juste pour gérer l'événement. cela n'arriverait pas mais vous pouvez toujours essayer de changer l'heure de la session dans IIS. En fait, first pref est Web.config s'il n'est pas défini dans le fichier de configuration alors il utilisera IIS. –

+0

Parlez-vous du serveur de production? Quelle application de serveur Web utilisez-vous? IIS? – Vedran

Répondre

5

Les sessions seront également réinitialisées lorsque l'application sera recyclée. Cela se produit lorsque vous modifiez certaines choses sur le site, comme changer quelque chose dans le dossier "bin" ou modifier le fichier "web.config".

IIS peut également arrêter ou recycler les applications qu'il ne pense pas être utilisées pour le moment. Voulez-vous vraiment conserver tout en mémoire pendant deux heures, même après le départ de l'utilisateur? De meilleurs moyens de maintenir la session en vie consisteraient à utiliser un rappel AJAX régulier (toutes les quelques minutes). Rechercher "session keep alive asp.net ajax".

+0

Merci pour la réponse, mais la session a expiré lorsque l'utilisateur est actif dans le site Web –

+0

@UdaySatardekar - Voulez-vous dire "pages demandant" ou "occupé à remplir un formulaire"? IIS et ASP.Net ne comptent que la requête et ne peuvent pas voir qu'un utilisateur a toujours une page dans son navigateur. Un "keep alive" aidera à dire à IIS/ASP.Net que l'utilisateur est toujours occupé. –

1

Avez-vous vérifié le délai d'attente de session avec lequel l'application se termine? Faites un response.write de Session.Timeout. Cette valeur peut être définie à plusieurs endroits.

Comment savez-vous que l'utilisateur est en activité? La session expirera s'il tape uniquement du texte, défile et/ou lit pendant des durées supérieures à la valeur du délai d'expiration. Le navigateur doit invoquer une requête HTTP au serveur pour réinitialiser le temporisateur. Comme l'a mentionné Hans, un «pinger» basé sur un script d'arrière-plan qui s'exécute à intervalle pour accéder à un contenu Web minimal aidera. Étant donné que je suis sur le point de démarrer une autre application Web, et que j'ai besoin d'ajouter cette fonctionnalité à la plupart des applications Web, je me suis inspiré de créer un petit paquet appelé Keep Me Alive pour accélérer ce processus. l'avenir. Vous pouvez le trouver ici: http://kma.codeplex.com/

Espérons que ça aide!

Questions connexes