Etat de session non conservé lors d'appels vers une méthode de page
-
06-07-2019 - |
Question
Code côté serveur:
[WebMethod(CacheDuration = 0, EnableSession = true)]
public static int UserID()
{
if (HttpContext.Current.Session["UserID"] == null) return 0;
int UserID = Convert.ToInt32(HttpContext.Current.Session["UserID"]);
return (UserID);
}
Code côté client:
$.ajax({
type: "POST", cache: false,
url: "Login.aspx/UserID",
data: "{'r':" + rnd() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
}
});
Ce code fonctionne bien sur mon hôte local. et le " UserID " appel ajax, retourne la valeur correcte du paramètre Session.
mais lorsque j'essaie de télécharger mon site Web sur le serveur, le "quot ID utilisateur" " L'appel ajax retourne toujours faux!
mon serveur est asp.net 2.0 et j'utilise jquery 1.3.2
Aidez-nous à résoudre ce problème.
La solution
Lisez cet article: FAQ sur l'état de la session ASP.NET . J'ai trouvé ma réponse dans cette question:
- Q: Les états de session fonctionnent sur certains serveurs Web mais pas sur d'autres. A: Peut-être un problème de nom de machine. Voir http://support.microsoft.com/default.aspx ? scid = kb; FR-US; q316112 .
- Q: Pourquoi mes variables de session sont-elles souvent perdues lors de l'utilisation du mode InProc? A: Probablement à cause du recyclage de l'application. Voir http://support.microsoft.com/default.aspx ? scid = kb; en-us; Q316148
Changement du mode sessionState en " StateServer " résolu le problème. Utilisez le code ci-dessous:
<sessionState mode="StateServer"
stateConnectionString="tcpip=localhost:42424"
cookieless="false"
timeout="999"/>
Autres conseils
Quelques points à vérifier:
Utilisez-vous la configuration WebFarm? un problème peut survenir lors de l’utilisation de la session dans la configuration WebFarm.
Avez-vous vérifié votre trafic réseau en utilisant des outils tels que Fiddler ou FireBug? Le cookie d’authentification ASP.NET est-il envoyé pendant un appel AJAX?
Pouvez-vous confirmer que votre session var est valide?