c# - 在 C# 中替代 Session 变量,我们可以使用类及其对象来存储值而不是 session 变量吗?

标签 c# asp.net .net oop session-variables

我正在构建一个网络应用程序。身份验证将由网站管理,这与我无关。我需要在某个地方存储 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

您可以在此处找到更多信息:

Lifetime of ASP.NET Static Variable

关于c# - 在 C# 中替代 Session 变量,我们可以使用类及其对象来存储值而不是 session 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445473/

相关文章:

c# - 什么是NullReferenceException,如何解决?

c# - Asp.net 动态下拉列表

.net - iexplore.exe.config 被忽略

c# - 使用现有范围名称从电子表格中读取或检索值

.net - 流畅的验证与数据注释

c# - 类实现抽象类的通用类型约束

c# - 如何实现类似 "Fences"的东西

C# .net Core Fluentvalidation 手动验证获取验证器类实例

c# - 必须声明标量变量 "@Email"

c# - GridView : How to make the header text multiline?