替换c#中的Session变量,我们可以使用类及其对象来存储值而不是会话变量吗?

Vig*_*ian 4 .net c# asp.net oop session-variables

我正在构建一个Web应用程序.身份验证将由网站管理,这不是我关注的问题.我需要存储的是UserID在某个地方.

一旦他们打开应用程序,我将能够得到他们的UserID.我以前使用Session变量来存储它.我可以创建一个类说:

static string _UserID;

public static string UserDetails
{
    get
    {
        return _UserID;
    }
    set
    {
        _globalValue = \\value from webpage;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用UserDetails._UserID而不是将其分配给会话变量?!网站的会话服务器不是很可靠,所以我想我可以用这种方式.这会有用吗?

我从答案中了解到,每个用户都会覆盖变量,这不是我想要的!

如果我create an instance of this class在处理程序中并将其分配给它会是同样的情况UserID吗?

有没有其他方法,我可以使其范围仅限于一个用户,即我登录的UserID应该相同,如果新用户登录到应用程序,它不能被覆盖?使用这种方法的缺点是什么?如果我只使用一个页面并在applciation的启动中分配对象,这种方法是否合适?

Car*_*ras 6

静态变量在app域的生命周期内持续存在.因此,导致静态变量"重置"的两件事是应用程序域重新启动或使用新类.

主要问题是静态变量在所有USERS之间共享,在您假装在其中存储UserID的情况下这很危险.如果您想存储每个用户的sessoin ID,您应该使用Session

你可以在这里找到更多信息:

ASP.NET静态变量的生命周期