gpt4 book ai didi

asp.net - session 生命周期问题

转载 作者:行者123 更新时间:2023-12-02 07:47:25 24 4
gpt4 key购买 nike

我对 ASP.NET 中 session 的生命周期有点困惑,这是我的测试用例。

用户登录,我将一些信息保存到 session 变量(例如 Session["bob"]="bob"),然后我执行“IIS 重置”。用户仍处于登录状态,但 session 数据为 null(例如 Session["bob"].ToString() 抛出 NullReferenceException

我希望 session 数据仍然存在。除了注销用户之外,我还能做些什么吗?我希望只要用户仍然登录, session 数据就会存在。

非常感谢任何好的链接,以便我理解发生了什么,以及对实际问题的任何帮助。我尝试用谷歌搜索这个,但无法以某种方式构建问题以获得我想要的内容。

最佳答案

您看到的行为 - Session 内容在 IIS 重置事件中无法保存 - 是由于 Session 值的存储位置。默认情况下,这些值存储在 ASP.NET“工作进程”的内存中,这是运行 ASP.NET 网站的程序。

当您执行“IIS 重置”时,您会关闭整个 IIS 服务器,包括 ASP.NET 工作进程。这意味着 Session 的内容已从内存中删除。您的用户似乎仍处于登录状态,因为这是由存储在其浏览器中的 cookie 控制的。如果 cookie 仍然有效,则登录有效。

如果您希望您的 session 状态在 IIS 重置(或任何其他导致 ASP.NET 工作进程重新启动的情况)后继续存在,您需要将您的 session 对象存储在另一个地方。 ASP.NET 通过使用不同的 session 存储“模式”完全支持这一点。阅读 MSDN 文章“Session-State Modes”中的内容。

有关 session 的一般概述,请查看 MSDN 上的“ASP.NET Session State Overview”文章。

关于asp.net - session 生命周期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901076/

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