我不确定我是否正确地解决了这个问题。我的页面应该如何工作是每次登录时,该用户对象都作为静态变量存储在全局页面上。这样我就可以从任何页面调用它。这很好。在本地测试时,就像魅力一样。但是当我从IIS远程测试我的网站时,工作正常。但是,如果我关闭页面并再次调用它,该用户对象将保持相同的值。我是Web应用程序部署的新手。我部署站点的方式是获取解决方案资源管理器中引用的所有文件,并将它们转储到IIS上的应用程序目录中。我知道其他方法,但我尝试了其他方法,而且这是唯一有效的方法。
Pt2 :给了一些想法,这也浮现在脑海中。如果我实现会话而不是静态变量来存储用户类对象,如果两个用户尝试记录,这会工作吗?
PS。会自己测试一下,但仍然没有改变我的代码来使用会话而不是静态变量。
此外,我还是一名大三学生,我已经完全承担了项目的责任,导致首席开发人员受到保护。由于我只管理过网页这一事实,我对此感到困惑。从来没有从头开始完成一个完整的系统。任何帮助都很高兴。
请解释你的答案和谢谢
答案 0 :(得分:1)
所以,让我带你回到悬崖边。
Web应用程序中的全局静态通常是一个坏主意,尤其是在处理用户数据时。这是因为static variables are only defined in one spot per AppDomain。
无论创建了多少个类实例,都只存在一个静态成员的副本。
这意味着所有线程可以访问同一个变量。在具有多个并发用户的Web应用程序上,这是个坏消息。
更好的选择是使用某种Session或Cache,但只要知道即使那些在服务器场中运行它也有限制。
如果您希望您的值在每个页面上都可用,那么您始终可以创建一个基页对象,其上包含一个只读/写会话的属性。这是封装数据的简便方法。
public MyObject {
get { return (MyObject)Session["MyObject_key"]; }
set { Session["MyObject_key"] = value; }
}