替代 c # 中的会话变量,我们可以使用类及其对象来存储值而不是会话变量吗?
本文关键字:变量 会话 存储 对象 我们 替代 可以使 | 更新日期: 2023-09-27 18:35:50
我正在构建一个Web应用程序。 身份验证将由网站管理,这不是我关心的问题。 我需要存储的是某个地方的UserID
。
一旦他们打开应用程序,我将能够获得他们的UserID
。 我以前使用会话变量来存储它。 我可以创建一个类说:
static string _UserID;
public static string UserDetails
{
get
{
return _UserID;
}
set
{
_globalValue = ''value from webpage;
}
}
并使用UserDetails._UserID
而不是将其分配给会话变量?!该网站的会话服务器不是很可靠,所以我想我可以使用这种方式。这行得通吗?
从答案中了解到,每个用户的变量将被覆盖,这不是我想要的!!
如果我create an instance of this class
处理程序并将UserID
分配给它,情况会是一样的吗?
有没有其他方法可以使其范围仅限于一个用户,即我登录时使用的 UserID 应该相同,如果新用户登录到应用程序,则不得覆盖它? 使用这种方法有什么缺点?如果我只使用一个页面并在应用程序的启动中分配对象,这种方法好吗?
静态变量在应用程序域的生命周期内保持不变。因此,导致静态变量"重置"的两件事是应用程序域重新启动或使用新类。
主要问题是静态变量在所有用户之间共享,在您假装在其中存储 UserID 的情况下,这是危险的。如果要存储每个用户 sessoin ID 您应该使用Session
您可以在此处找到更多信息:
ASP.NET 静态变量的生存期
static
将在所有用户之间共享,这意味着您将为每个人覆盖它。如果您不想将其存储在Session
则可以将其存储在cookie
中(如果安全性很重要,则加密)。