59 votes

Comment puis-je obtenir la valeur d'une variable de session dans une méthode statique?

J'utilise asp.net pagemethods avec jQuery .... Comment obtenir la valeur d'une variable de session dans une méthode statique en C #?

 protected void Page_Load(object sender, EventArgs e)
{
    Session["UserName"] = "Pandiya";
}
[WebMethod]
public static string GetName()
{
    string s = Session["UserName"].ToString();
    return s;
}
 

Quand je compile ceci, j'obtiens l'erreur:

Une référence d'objet est requise pour le champ non statique, la méthode ou la propriété 'System.Web.UI.Page.Session.get'`

Une suggestion ou une alternative?

101voto

jwwishart Points 1327

HttpContext.Current.Session["..."]

HttpContext.Current vous donne le courant ... ainsi, le contexte Http; à partir duquel vous pouvez accéder: session, demande, réponse, etc.

20voto

Jon Skeet Points 692016

Si vous n'avez pas changé de fil, vous pouvez utiliser HttpContext.Current.Session, comme indiqué par jwwishart.

HttpContext.Current renvoie le contexte associé au thread. Évidemment, cela signifie que vous ne pouvez pas l'utiliser si vous avez commencé un nouveau fil de discussion, par exemple. Vous pouvez également besoin d'envisager fil de l'agilité ASP.NET les demandes ne sont pas toujours exécuter sur le même thread pour l'ensemble de la demande. Je crois que le contexte est propagée de façon appropriée, mais c'est quelque chose à garder à l'esprit.

D'autre part, je ne suis pas sûr de savoir si vous allez même avoir une session pour une Page AJAX Méthode. Vous pouvez l'essayer, mais je préfère être un peu nerveux d'elle. Idéalement, vous devriez vous passer toutes les informations dont vous avez besoin à partir du client à la place.

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