我有一个项目存储在 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 不同吗?
最佳答案
HttpContext.Items仅在单个请求期间保存项目。您的 AJAX 请求是第二个请求,并且有自己的 Items
属性。
关于asp.net - HttpContext 项目不可用于 AJAX 调用的 Web 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239340/