2

我有一个存储在 HttpContext 中的项目:

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

我可以从任何页面的方法访问这个没有问题。例如:

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

这工作正常。

但是,当通过 AJAX 调用页面的 Web 方法之一时,会失败:

[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 是否不同?

4

2 回答 2

4

HttpContext.Items在单个请求期间保存项目。您的 AJAX 请求是第二个请求,并且有它自己的Items属性。

于 2010-02-10T18:54:12.067 回答
-1

也许您需要启用会话状态才能使其工作:

[System.Web.Services.WebMethod(true)]
于 2010-02-10T18:42:17.167 回答