我怎样才能得到一个静态方法中的会话variables的值?

我正在使用jQuery的asp.net pagemethods ….如何获得静态方法在C#中的会话variables的值?

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

当我编译这个时,我得到的错误:

非静态字段,方法或属性“System.Web.UI.Page.Session.get'`需要对象引用

任何build议或任何其他select?

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

HttpContext.Current得到你当前…好吧,Http上下文; 从中可以访问:会话,请求,响应等

如果你没有改变线程,可以使用HttpContext.Current.Session ,如jwwishart所示。

HttpContext.Current返回与该线程关联的上下文。 显然这意味着你不能使用它,如果你已经开始了一个新的线程,例如。 您可能还需要考虑线程敏捷性 – 对于整个请求,ASP.NET请求并不总是在同一个线程上执行。 我相信上下文是适当传播的,但是要牢记这一点。

另一方面,我不确定是否会有一个AJAX页面方法的会话。 你可以试试,但是我会有些紧张。 理想情况下,您应该从客户端传递所需的全部信息。

尝试这个:

 HttpContext.Current.Session["UserName"].ToString();