C# 由多个用户共享的类实例
我有一个托管在Azure上的web应用程序,它在用户之间共享来自SQL Azure数据库中名为C# 由多个用户共享的类实例,c#,asp.net,azure,C#,Asp.net,Azure,我有一个托管在Azure上的web应用程序,它在用户之间共享来自SQL Azure数据库中名为Message的表中的消息。我的项目包含一个跟踪当前用户信息的类,名为CurrentUser.cs。它包含诸如Username、RoomID、JoinTime等属性。当其他用户登录时,我很难理解这个类会发生什么。我最初认为每个用户都有自己的CurrentUser实例,其他人无法访问。以下是我看到的: 如果UserA登录,他们可以发布消息,并且消息会显示为他们的用户名。当UserB登录时,他们还可以使用自
Message
的表中的消息。我的项目包含一个跟踪当前用户信息的类,名为CurrentUser.cs
。它包含诸如Username
、RoomID
、JoinTime
等属性。当其他用户登录时,我很难理解这个类会发生什么。我最初认为每个用户都有自己的CurrentUser
实例,其他人无法访问。以下是我看到的:
如果UserA
登录,他们可以发布消息,并且消息会显示为他们的用户名。当UserB
登录时,他们还可以使用自己的用户名发布消息。如果UserA
在UserB
登录后发布消息,则他们的消息显示为UserB
的用户名。这使我相信UserA
的CurrentUser.cs
文件在UserB
登录时被覆盖。这怎么可能?我想每次有人访问我的站点时,就会出现一个新的CurrentUser.cs
实例。不是这样吗?我的所有用户是否都与我当前拥有的类共享同一个CurrentUser
类
编辑
我在CurrentUser
中有一个构造函数,它在应用程序加载时设置属性。我从不调用CurrentUser=new CurrentUser()
或任何东西。我的问题更多的是关于每个用户是否都有自己版本的CurrentUser.cs
。我的印象是,我不必创建CurrentUser
的实例,因为每个访问者都有自己的实例
static CurrentUser()
{
MembershipUser membershipUser = Membership.GetUser();
_username = membershipUser.UserName;
_providerKey = (Guid)membershipUser.ProviderUserKey;
UserProfile profile = UserProfileController.GetByProviderKey(_providerKey);
_userID = profile.UserID;
_roomID = profile.RoomID;
_joinRoomTime = DateTime.Now.ToUniversalTime();
DisplayedMessages = new List<Message>();
}
static CurrentUser()
{
MembershipUser MembershipUser=Membership.GetUser();
_用户名=membershipUser.username;
_providerKey=(Guid)membershipUser.ProviderUserKey;
UserProfile profile=UserProfileController.GetByProviderKey(\u providerKey);
_userID=profile.userID;
_roomID=profile.roomID;
_joinRoomTime=DateTime.Now.ToUniversalTime();
DisplayedMessages=新列表();
}
编辑2
我的属性是静态的,但我的类不是。也许这与此有关?如果您在此处发布您的类定义,将会很有帮助。问题中有太多没有代码的变量。您的类可以是静态的,或者存储在静态变量中,等等。答案在于你的代码。我们无法推测您可能犯了什么错误。您必须向我们展示CurrentUser的实例化位置。您需要为每个用户提供实例类和实例成员。静态成员在所有实例之间共享-这是您的problem@T.S.-我以为这很简单。非常感谢。