2009-07-31 8 views
1

Mon code côté serveur:session Etat non Retenu sur les appels à une page Méthode

[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); 

    } 

Mon 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 localhost. et l'appel ajax "UserID", renvoient la bonne valeur du paramètre Session. Mais quand j'essaie de télécharger mon site web sur le serveur, l'appel ajax "UserID" renvoie toujours false !!

mon serveur est asp.net 2.0 et j'utilise jquery 1.3.2

Alors s'il vous plaît aider à résoudre ce problème.

+0

Comment définir votre session en premier lieu? Peut-être que le problème n'est pas ici, peut-être que la Session ["UserId"] est vraiment nulle, avez-vous vérifié cela? – Freddy

+0

Publiez la section appropriée du web.config de votre serveur s'il vous plaît –

+0

Etat de la session InProc? Est-ce que la boîte de production a un jardin web/ferme en place? – redsquare

Répondre

1

Lire cet article: ASP.NET Session State FAQ J'ai trouvé ma réponse à cette question:

  1. Q: Session précise des travaux sur certains serveurs Web, mais pas sur d'autres. A: Peut-être problème de nom de machine. Voir http://support.microsoft.com/default.aspx?scid=kb;EN-US;q316112.
  2. Q: Pourquoi mes variables de session sont-elles fréquemment 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

Changer le mode sessionState en "StateServer" a résolu le problème. Utilisez le code ci-dessous:

<sessionState mode="StateServer" 
    stateConnectionString="tcpip=localhost:42424" 
    cookieless="false" 
    timeout="999"/> 
0

Quelques choses à vérifier:

Vous utilisez la configuration Webfarm? il peut y avoir un problème lors de l'utilisation de la session dans la configuration de WebFarm.

Avez-vous vérifié votre trafic réseau en utilisant des outils comme Fiddler ou FireBug? Le cookie d'authentification ASP.NET est-il envoyé lors d'un appel AJAX?

Pouvez-vous confirmer votre session var est valide?

+0

Quel est le Webfarm? mon fournisseur d'hébergement Internet est: ixwebhosting (Business Plus (Win) Plan) – desmati

+0

Oui. J'utilise fireBug pour surveiller le trafic. comment puis-je vérifier si le cookie Auth est envoyé? – desmati

+0

comme je l'ai dit, je suis sûr que mes vars de session sont définies. le formulaire de connexion définira le paramètre UserID à 0> – desmati

Questions connexes