Diagnostiquer par programme la perte de session ASP.Net due au recyclage des applications?

StackOverflow https://stackoverflow.com/questions/401311

  •  03-07-2019
  •  | 
  •  

Question

Nous disposons d'une application ASP.Net 2.0 (VS2005) qui fonctionne correctement localement, mais perd parfois l'état de session lorsqu'elle est déployée sur le serveur distant.

Je soupçonne un problème possible avec IIS lors du recyclage de l'application et de l'effacement de l'état de session des utilisateurs. Cependant, le serveur est distant, pas sous notre contrôle ... nous ne pouvons donc pas simplement lancer l'Administrateur IIS et vérifier les paramètres de l'application. Une autre cause possible, bien sûr, serait le rejet du cookie de session ASP.Net par les clients pour une raison quelconque.

(Nous avons à peu près exclu une erreur dans notre code parce que c'est une application simple et qu'elle ne tente jamais de supprimer quoi que ce soit de l'objet Session mais bien sûr ... ce sont les derniers mots célèbres, hein?)

Comment établissez-vous un diagnostic par programme?

J'essaie surtout de trouver un moyen de diagnostiquer le problème. si le recyclage des applications trop zélé est le coupable, il ne devrait pas être trop difficile de coder.

Je suis certain qu'il s'agit d'un problème courant pour les développeurs ASP.Net.

Était-ce utile?

La solution

Voici quelques liens qui peuvent vous aider à résoudre ce problème si vous pouvez modifier certains paramètres:

Journalisation des événements de recyclage de processus de travail dans IIS 6.0 (IIS 6.0)

Enregistrement des événements d'arrêt d'application ASP.NET

Autres conseils

Ajoutez du code de journalisation à la méthode global.asax Application_Start pour savoir quand / si votre perte est causée par un redémarrage de l'application (ou au moins, vous verrez quand le serveur démarre. Si vous le savez une session a été perdue en même temps, vous connaissez votre coupable).

Une solution de contournement consisterait à utiliser un état de session hors procédure (il faudrait probablement utiliser SQL si vous n’avez pas le contrôle du serveur). Votre code nécessite un peu plus de travail car tout ce que vous stockez dans Session doit être sérialisable, mais résout le problème des redémarrages d'applications qui entraînent une perte de session.

IIS configuré pour plusieurs threads de travail (jardin Web) dans le pool d'applications peut entraîner la perte de l'état de la session.

J'ai trouvé un scénario de perte de session - Dans une page asp.net, un champ de montant contient des caractères non valides, suivis d'une récupération de variable de session à une autre fin. Après avoir publié le nombre non valide analysé par le biais de Convert. ToInt32 ou double lève une exception de la première chance, mais l'erreur ne s'affiche pas sur cette ligne. Au lieu de cela, Session étant nulle en raison d'une exception non gérée, affiche une erreur lors de l'extraction de la session, trompant ainsi le débogage ...

ASTUCE: Testez votre système pour qu’il échoue - DESTRUCTIF .. entrez suffisamment de fichiers indésirables dans des scénarios indépendants, vous pourrez ainsi reproduire cette machine sur votre code local ...):

J'espère que ça aide, hydtechie

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top