2009-03-10 10 views
3

J'ai un iframe keep alive (iframe qui frappe une page, defibrillator.aspx, sur mon site toutes les quelques minutes pour garder la session en vie) sur ma page maître pour une application asp.net. Cela fonctionne la plupart du temps mais de temps en temps mes variables de session renvoient null pendant le chargement de la page sur ma page de défibrillateur. Au début, je pensais que la session était expirée par le serveur pour une raison quelconque, donc j'ai mis une connexion dans l'événement Session_End dans le global.asax mais il n'a jamais été touché.ASP.NET WebForms - Variables de session Null

Aucune idée susceptible de provoquer la perte de la session.

+0

Quel est votre mode d'état de session? InProc? –

Répondre

2

De nombreuses choses peuvent entraîner la perte de la session. Un recycleur AppPool, iisreset, le client pourrait perdre son cookie de session, etc. Sans en savoir plus, il est difficile de dire quel est le problème.

Si la session est si critique que vous interrogez l'application pour éviter que le processus de travail ne dorme, vous devez peut-être rechercher dans persisting your session state to SQL Server.

0

Si le mécanisme de persistance choisi est InProc, il peut être déclenché par beaucoup de choses. Totalement contre-recommandé pour un environnement de production.

1

J'ai eu ce même type de problème, en stockant un état de panier dans la session mais en lui renvoyant de manière aléatoire null à la place. Je pense avoir trouvé la réponse sur le blog de Bertrand Le Roy, qui semble fonctionner pour moi:

problèmes de perte de session peuvent également résulter d'un pool d'applications mal configuré. Par exemple, si le pool d'applications votre site est en cours d'exécution est configuré comme une ferme Web ou un jardin Web (en définissant le nombre maximal de processus de travail à plus d'un), et si vous n'êtes pas en utilisant la session de service ou sessions SQL , les demandes entrantes vont imprévisiblement aller à l'un des processus de travail , et si ce n'est pas la session a été créée, il est perdu. Les solutions à ce problème sont soit pour ne pas utiliser un jardin Web si vous n'avez pas besoin de l'amélioration des performances, ou utilisez un des fournisseurs de session de processus.

Blog