Подтвердить что ты не робот

Как я могу получить значение переменной сеанса внутри статического метода?

Я использую asp.net pagemethods с jQuery.... Как получить значение переменной сеанса внутри статического метода в С#?

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'`

Любое предложение или любая альтернатива?

4b9b3361

Ответ 1

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

HttpContext.Current получает текущее... ну, Http Context; из которого вы можете получить доступ: сеанс, запрос, ответ и т.д.

Ответ 2

Если вы не изменили нить, вы можете использовать HttpContext.Current.Session, как указано в файле jwwishart.

HttpContext.Current возвращает контекст, связанный с потоком. Очевидно, это означает, что вы не можете использовать его, например, если вы начали новый поток. Вам также может потребоваться учитывать гибкость потоков - запросы ASP.NET не всегда выполняются в одном потоке для всего запроса. Я считаю, что контекст пропагандируется надлежащим образом, но это что-то иметь в виду.

С другой стороны, я не уверен, будет ли у вас даже сеанс для метода страницы AJAX. Вы можете попробовать, но я бы немного нервничала из-за этого. В идеале вы должны передать всю информацию, которая вам нужна от клиента.

Ответ 3

Попробуйте следующее:

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