Элементы HttpContext, недоступные веб-методу, вызываемому AJAX - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть элемент, который я храню в HttpContext:

HttpContext.Current.Items["myItem"] = "123";

Я не могу получить доступ к этой проблеме с помощью любого из методов страницы. Например:

protected override void OnLoad(EventArgs e)
{
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // "123"
}

Это отлично работает.

Однако при вызове одного из веб-методов страницы через AJAX происходит сбой:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string MyWebMethod()
{
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // NULL
}

Отличается ли HttpContext асинхронного вызова от HttpContext для страницы?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

HttpContext.Items содержит только элементы во время одного запроса . Ваш AJAX-запрос является вторым запросом и имеет собственное свойство Items.

0 голосов
/ 10 февраля 2010

Возможно, вам нужно включить состояние сеанса, чтобы эта работа работала:

[System.Web.Services.WebMethod(true)]
...