繁体   English   中英

静态类和会话变量

[英]Static class and Session variables

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

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

我的问题是:为每个用户运行该函数时,每个用户会获得不同的值吗? (考虑到每个用户会话为Session [“ 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中的静态方法中调用非静态方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM