我目前正在开发一个ASP.NET网站。在我的一个页面中,我有一个静态字段用于当前登录用户的CompanyId。
private static Guid _CompanyId = Company.Get().CompanyId;
Company.Get()返回有关当前登录用户的公司的信息,其中使用以下方式检索UserId:
System.Web.Security.Membership.GetUser();
但是当以另一个用户身份登录时,在其他用户中, Company.Get()。CompanyId 将从第一家公司返回Guid。
我是否错过了使用静态字段的观点,还是有其他原因? 我通过使用 Company.Get()。CompanyId 替换我的代码隐藏中对 _CompanyId 的所有引用来修复它,以便快速修复,但这不是真的好的解决方案。
答案 0 :(得分:7)
静态变量值在应用程序级别持续存在,因此在用户之间持续存在。您应该使用会话来存储您的信息。在重新分配值,重新启动应用程序等之前,静态变量值不会更改。
答案 1 :(得分:3)
您应该使用HttpContext.Current来存储会话级变量。静态变量对Web应用程序中的所有会话都是可见的。
答案 2 :(得分:1)
从字段定义中删除static
可以为您提供所需内容。