asp.net网站中静态字段的问题

时间:2009-09-04 00:42:37

标签: c# .net asp.net

我目前正在开发一个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 的所有引用来修复它,以便快速修复,但这不是真的好的解决方案。

3 个答案:

答案 0 :(得分:7)

静态变量值在应用程序级别持续存在,因此在用户之间持续存在。您应该使用会话来存储您的信息。在重新分配值,重新启动应用程序等之前,静态变量值不会更改。

答案 1 :(得分:3)

您应该使用HttpContext.Current来存储会话级变量。静态变量对Web应用程序中的所有会话都是可见的。

答案 2 :(得分:1)

从字段定义中删除static可以为您提供所需内容。