60 votes

Perte de l'état de la session

J'ai une application ASP.net dans laquelle les utilisateurs ne sont pas en mesure de mener à bien certaines actions, pour des raisons qui, je le suppose, ne peuvent être liées qu'à la perte de leur session (qui est l'endroit où je maintiens leurs informations d'utilisateur actuelles, et comment déterminer s'ils sont connectés).

Je n'arrive pas à comprendre pourquoi ils ont perdu leur session, alors ma première question est la suivante :

Qu'est-ce qui peut provoquer (en général) la perte de la session d'un utilisateur en ASP.net ?

et puisque je ne sais pas quand un utilisateur perd sa session et que je ne peux pas le reproduire moi-même :

Comment puis-je savoir quand un utilisateur perd sa session ?

Voici ma configuration de sessionState pour référence

<sessionState
           mode="InProc"
           cookieless="false"
           cookieName="My.Site.Com"
           timeout="480"/>

7 votes

Tu penses peut-être trop fort. Vous avez déclaré que vous "supposez" que la session est perdue. Il est possible qu'il s'agisse d'une chasse à l'oie sauvage. Peut-être feriez-vous mieux d'analyser l'exception que vous recevez et d'en tenir compte. D'autres possibilités incluent des problèmes liés à l'utilisation d'une ferme web ou d'un cluster. Comme le mode de session est "InProc", si les connexions changent de serveur, l'état de la session sera perdu.

0 votes

Je sais que je n'utilise pas une ferme web, mais je suis sur une machine virtuelle. Il est vrai que je ne fais que supposer, mais je suis sûr à 80 % que c'est l'état de la session, et j'aimerais au moins continuer à supposer que c'est un problème jusqu'à ce que je puisse l'exclure.

1 votes

Pour moi, cela a fonctionné pour ajouter une clé de machine à mon web.config. Je suis hébergé sur un hébergement mutualisé et ce lien m'a aidé à créer une clé locale puis à la publier. enlace

0voto

Gert R. Points 1

Je ne perdais que la session qui n'était pas une chaîne de caractères ou un nombre entier mais un chemin de données. Le fait de placer les données dans un objet sérialisable et de les enregistrer dans la session a fonctionné pour moi.

0voto

Martin Seitl Points 86

J'ai eu un problème sur IIS 8 lors de la récupération du contenu via Ajax. Le problème était le suivant MaximumWorkerProcesses a été fixé à 2 et Javascript a ouvert 17 requêtes simultanées. C'était plus que ce que l'AppPool pouvait gérer et un nouveau pool (sans données d'authentification) a été ouvert.

La solution était de changer MaximumWorkerProcesses a 0 sur IIS -> Server -> Application Pools -> [myPool] -> Advanced Settings -> Process Model -> MaximumWorkerProcesses .

0voto

SRK - Khurram Points 11

Je ne sais pas si cela est lié à votre problème, mais Windows 2008 Server R2 ou SP2 a modifié ses paramètres IIS, ce qui entraîne un problème de persistance des sessions. Par défaut, il gère des variables de session distinctes pour HTTP et HTTPS. Lorsque les variables sont définies en HTTPS, elles ne seront disponibles que sur les pages HTTPS lors de la commutation.

Pour résoudre le problème, il existe un paramètre IIS. Dans IIS Manager, ouvrez les propriétés ASP, développez Propriétés de la session et changer Nouvelle identité sur la connexion sécurisée a Faux .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X