asp.net - HttpContext 项目不可用于 AJAX 调用的 Web 方法

标签 asp.net asp.net-ajax httpcontext

我有一个项目存储在 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/

相关文章:

IE 中的 ASP.NET 页面在其他程序中窃取焦点

javascript - 访问 JSON 响应中的字段

c# - Scriptmanager RegisterStartupScript 不适用于回调

nhibernate - 如何在 Web API 异步任务中保留 HttpContext

asp.net - 在页面之间导航时停止主页面刷新?

asp.net - 如何使用 Angular 2/4 开发搜索建议文本框

c# - 如何从 Javascript 调用 OnPageIndexChanging?

authentication - Azure 应用服务身份验证的 HttpContext 用户为空

asp.net-mvc-3 - 在MVC3中,如何获取当前 Controller 名称?

asp.net - 在 ASP.Net 中实现动态 URL 重写的最佳方法是什么?