2009-10-07 6 views
1

J'ai une simple application ASP.NET MVC. Lorsque la première méthode d'action est exécutée, elle stocke certaines données dans la variable Session. Sur la vue qui en résulte, j'ai un appel jquery ajax déclenché par un bouton à une autre méthode d'action.Id de session changeant au hasard

Lorsque je clique sur le bouton, un identifiant de session différent est utilisé côté serveur, c'est un peu aléatoire. Il y a parfois un écart d'une seconde environ entre le démarrage et le clic sur le bouton et l'ID de session change toujours. Cela casse l'application lorsqu'elle tente de récupérer les données stockées par la première méthode d'action.

Une idée de ce qui se passe? Les deux demandes sont à la même URL.

  1. Je vois la méthode un instancier une nouvelle session avec Id X et stocker les données.
  2. Immédiatement après le chargement des incendies de demande Jquery. Je vois un identifiant de cookie de session différent sur l'en-tête de la requête.
  3. je reçois un "données non trouvé"

Un grand merci,

+1

Êtes-vous derrière une batterie de serveurs? – Gregoire

+0

Non c'est mon serveur de développement VS 2008 local. – madcapnmckay

Répondre

2

Ceci est par nature et ASP.NET essaie d'être efficace dans le stockage des sessions pour les utilisateurs. N'oubliez pas que si vous ne stockez rien dans la session, la valeur de la session change.

Si vous voulez dire que vous voulez ASP.NET pour suivre les sessions utilisateur, vous pouvez faire l'une des 2 choses:

  1. quelque chose de magasin dans la session.
  2. Gérez simplement l'événement Session_Start dans votre GLobal.asax. La présence de cette méthode indiquera ASP.NET pour le suivi des sessions, même s'il n'y a pas de données dans la session ..

// NOTE: Il n'y a pas besoin d'ajouter quelque chose à la session si vous faites cela ... public void Session_Start (expéditeur d'objet, EventArgs e) {

}

Ce comportement m'a causé beaucoup d'inquiétude dans le passé :)

+0

C'est intéressant. Cependant, je stockais quelque chose dans la session, puis sur une demande ultérieure essayait de le récupérer. J'ai ajouté la méthode Session_Start et cela semble faire l'affaire. Très confus. – madcapnmckay

Questions connexes