我正在构建一个网络应用程序。身份验证将由网站管理,这与我无关。我需要在某个地方存储 UserID
。
一旦他们打开应用程序,我将能够获得他们的 UserID
。我以前使用 Session 变量来存储它。我可以创建一个类说:
static string _UserID;
public static string UserDetails
{
get
{
return _UserID;
}
set
{
_globalValue = \\value from webpage;
}
}
并使用 UserDetails._UserID
而不是将其分配给 session 变量?!
该网站的 session 服务器不是很可靠,所以我认为我可以使用这种方式。
这行得通吗?
我从答案中得知变量将被每个用户覆盖,这不是我想要的!!
如果我在处理程序中创建此类的实例
并将UserID
分配给它,是否会出现相同的情况?
有没有其他方法可以使它的范围仅限于一个用户,即我登录的用户 ID 应该相同,如果新用户登录到应用程序,它不能被覆盖?使用这种方法的缺点是什么?? 如果我只使用一页并在应用程序启动时分配对象,这种方法好吗?
最佳答案
静态变量在应用程序域的生命周期内持续存在。因此,导致您的静态变量“重置”的两件事是应用程序域重启或使用新类。
主要问题是静态变量在所有用户之间共享,如果您假装在其中存储 UserID,那是很危险的。如果你想存储
每个用户 sessoin ID 你应该使用 Session
您可以在此处找到更多信息:
关于c# - 在 C# 中替代 Session 变量,我们可以使用类及其对象来存储值而不是 session 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445473/