关闭和打开同一页面后变量值仍然保存

Variables values remain saved after closing and opening the same page

我不确定我是否正确回答了这个问题。我的页面应该如何工作是每次登录时,该用户对象作为静态变量存储在全局页面上。这样我就可以从任何页面调用它。那很好用。在本地测试时,就像一个魅力。但是当我从 IIS 远程测试我的站点时,它工作正常。但是如果我关闭页面并再次调用它,该用户对象将保持相同的值。我对 Web 应用程序部署有点陌生。我部署站点的方式是获取解决方案资源管理器中引用的所有文件,并将它们转储到 IIS 上的应用程序目录中。我知道还有其他方法,但我尝试了其他方法,这是唯一有效的方法。

Pt2: 想了想,也想到了这个。如果我实现会话而不是静态变量来存储用户 class 对象,如果两个用户尝试登录,这会起作用吗?

PS。会自己测试,但仍然没有更改我的代码以使用会话而不是静态变量。

另外,我还是一名大三学生,我被赋予了一个项目的全部责任,因为首席开发人员被保释了。由于我只管理页面,我对此感到困惑。我从来没有从头开始做过一个完整的系统。任何帮助都将不胜感激。

请解释你的答案并谢谢

所以让我带你从这里的悬崖上走下来。

Web 应用程序中的全局静态通常不是一个好主意,尤其是在处理用户数据时。这是因为 static variables are only defined in one spot per AppDomain.

Only one copy of a static member exists, regardless of how many instances of the class are created.

这意味着所有 个线程将可以访问同一个变量。在具有多个并发用户的 Web 应用程序上,这是个坏消息。

更好的选择是使用某种 Session or Cache,但要知道,如果您 运行 在服务器场中,即使是那些也有限制。

更新:

如果您希望您的值在每个页面上都可用,那么您始终可以创建一个带有 属性 的基页对象,只需 reads/writes 即可进行会话。这是一种封装数据的简单方法。

public MyObject {
  get { return (MyObject)Session["MyObject_key"]; }
  set { Session["MyObject_key"] = value; }
}