静态类和会话变量

本文关键字:变量 会话 静态类 | 更新日期: 2023-09-27 18:26:15

我定义了一个静态类。在那个静态类中,我有以下方法。

public static int GetUserId()
{
    if(IsUserLoggedIn())
    {
        return Convert.ToInt16(HttpContext.Current.Session["user"]);
    }
    return 0;
}

我的问题是:当为每个用户运行该函数时,每个用户会得到不同的值吗?(考虑到每个用户会话为会话["user"]获得不同的userId。

我不知道静态类是否对此有用,或者是否会导致冲突问题。我在C#/ASP.NET中进行开发。

静态类和会话变量

简而言之,我相信答案是肯定的,但是您应该避免在非工厂方法中使用硬编码依赖项。。。考虑接受一个HttpSessionState,或者至少接受一个要操作的HttpContext对象,如下所示:

public static int GetUserId(HttpContext context)
{
    if(IsUserLoggedIn())
    {
        return Convert.ToInt16(context.Session["user"]);
    }
    return 0;
}

但是,您可能会在HttpContext、IMHO上使用内置的IPrincipalUser)属性。

HttpContext对于每个请求都会不同,所以是的。

这将给您一个错误(从静态方法调用非静态方法)。请参阅:-

在Java 的静态方法中调用非静态方法