我已经定义了一个静态类。在那个静态类中,我有以下方法。
public static int GetUserId()
{
if(IsUserLoggedIn())
{
return Convert.ToInt16(HttpContext.Current.Session["user"]);
}
return 0;
}
我的问题是:当每个用户运行该功能时,每个用户是否会获得不同的值? (考虑到每个用户会话为Session [“user”]获得不同的userId。
我不知道静态类是否对此有用或是否会导致冲突问题。我正在使用C#/ ASP.NET开发。
答案 0 :(得分:5)
简而言之,我认为答案是肯定的,但是您应该避免在非工厂方法中使用硬编码依赖项...考虑接受HttpSessionState
或至少接受HttpContext
个对象采取行动,像这样:
public static int GetUserId(HttpContext context)
{
if(IsUserLoggedIn())
{
return Convert.ToInt16(context.Session["user"]);
}
return 0;
}
但是,您应该使用IPrincipal
上的内置User
(HttpContext
)属性,恕我直言。
答案 1 :(得分:1)
对于每个请求,HttpContext都会有所不同,所以是的。
答案 2 :(得分:1)
这会给你一个错误(从静态方法调用非静态方法)。请参考: -