C# 实例化的类对于每个用户都是唯一的吗?
给定以下母版页或内容页C# 实例化的类对于每个用户都是唯一的吗?,c#,asp.net,class,instantiation,C#,Asp.net,Class,Instantiation,给定以下母版页或内容页 namespace Intranet { public partial class Site : System.Web.UI.MasterPage { WebSite.Security.Users.CurrentUser currentUser; protected void Page_Init(object sender, EventArgs e) { if (!Page.IsPo
namespace Intranet
{
public partial class Site : System.Web.UI.MasterPage
{
WebSite.Security.Users.CurrentUser currentUser;
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
currentUser = new WebSite.Security.Users.CurrentUser();
currentUser = WebSite.Security.Users.GetCurrentUser(currentUser);
Label_UserId.Text = currentUser.UserId;
}
}
}
}
namespace Intranet
{
public class WebSite
{
public class Security
{
public class Users
{
public class CurrentUser
{
public string UserId { get; set; }
}
public static CurrentUser GetCurrentUser(CurrentUser cu)
{
cu.UserId = "MethodThatGetsUserId";
return cu;
}
}
}
}
}
这就叫以下
namespace Intranet
{
public partial class Site : System.Web.UI.MasterPage
{
WebSite.Security.Users.CurrentUser currentUser;
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
currentUser = new WebSite.Security.Users.CurrentUser();
currentUser = WebSite.Security.Users.GetCurrentUser(currentUser);
Label_UserId.Text = currentUser.UserId;
}
}
}
}
namespace Intranet
{
public class WebSite
{
public class Security
{
public class Users
{
public class CurrentUser
{
public string UserId { get; set; }
}
public static CurrentUser GetCurrentUser(CurrentUser cu)
{
cu.UserId = "MethodThatGetsUserId";
return cu;
}
}
}
}
}
即使页面上同时有多个不同的用户,返回的实例化类“currentUser”是否包含唯一信息
感谢您的时间和洞察力。是的,每个请求都会实例化一个新类,而不仅仅是每个用户 类中的静态字段将被共享,您应该使用会话和应用程序数据在请求或用户之间共享数据。否,使用此行:
currentUser = new WebSite.Security.Users.CurrentUser();
您正在母版页类中创建一个新实例。在每个请求
中创建的实例仅在该请求中可用(当然,取决于范围),除非使用静态
变量。应用程序中所有用户/线程的静态变量都相同
但是,您实际上要做的是获取当前用户。这应该使用HttpContext.Current.User
或Page.Current
来完成,这是一个IPrincipal
,应该包含您在应用程序的Authenticate\u请求
方法中填写的信息
要了解有关ASP.NET表单身份验证的更多信息,请参阅:因此,当属性是静态的,并且我在代码文件中实例化该类时,这就是为什么在不同用户访问调用这些静态属性的页面时,用户ID被共享的原因?我是如何做到这一点的,你将如何存储和访问在页面生命中的属性?我知道我可以使用会话变量,但我喜欢以这种方式使用类的intellisense部分。@user3071434只要传递到会话状态的类是可序列化的,您仍然可以使用强类型类。CurrentUser类的属性包含的字段比userid(由HttpContext填充)多很多,我想要一个地方来设置/获取所有用户信息。