gpt4 book ai didi

c# - HttpContext.Current.Items ["value"] 不工作因为 AngularJS 调用创建新 session

转载 作者:太空狗 更新时间:2023-10-29 17:43:08 24 4
gpt4 key购买 nike

我正在使用 C#、MVC 和 AngularJS。

我的问题是我的 MVC 程序创建了一个 HttpContext.Current.Items["value"] 并在初始主 Controller 中设置值,但是当我的 AngularJS 通过 ajax 调用访问应用程序时,它会创建一个新 session ,但我无法获得我之前在 HttpContext.Current.Items["value"] 调用中设置的值。

我能做些什么来解决这个问题吗?我想继续使用 HttpContext.Current.Items["value"]

为什么我的 AngularJS 调用会创建新的 session ID?我知道 session 是新 session 的原因是因为当我使用它时它们有不同的 ID:

String strSessionId = HttpContext.Session.SessionID;

最佳答案

HttpContext.Current.Items 是一个仅用于请求缓存的字典。一旦请求完成,其中的所有值都将超出范围。

// Will last until the end of the current request
HttpContext.Current.Items["key"] = value;

// When the request is finished, the value can no longer be retrieved
var value = HttpContext.Current.Items["key"];

HttpContext.Current.Session 是一个在请求之间存储数据的字典。

// Will be stored until the user's session expires
HttpContext.Current.Session["key"] = value;

// You can retrieve the value again in the next request,
// until the session times out.
var value = HttpContext.Current.Session["key"];

您的 HttpRequest.Current.Items 值不再可用的原因是您“在您的家庭 Controller 中”设置了它,这是一个与您的 AJAX 调用完全不同的请求。

session 状态取决于 cookie,因此如果将同一个 cookie 发送回服务器,则可以检索存储在那里的数据。幸运的是,如果您在同一个域中,AJAX will automatically send the cookie back to the server .

至于 SessionID 变化,ASP.NET does not allocate storage for session until it is used .因此,您需要在 session 状态中显式存储一些内容才能真正启动 session 。参见 this MSDN article获取更多信息。

关于c# - HttpContext.Current.Items ["value"] 不工作因为 AngularJS 调用创建新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com