静态类和会话变量
本文关键字:变量 会话 静态类 | 更新日期: 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上使用内置的IPrincipal
(User
)属性。
HttpContext对于每个请求都会不同,所以是的。
这将给您一个错误(从静态方法调用非静态方法)。请参阅:-
在Java 的静态方法中调用非静态方法