[英]Problem with static field in asp.net web-site
我目前正在開發一個ASP.NET網站。 在我的一個頁面中,我有一個靜態字段用於當前登錄用戶的CompanyId。
private static Guid _CompanyId = Company.Get().CompanyId;
Company.Get()返回有關當前登錄用戶的公司的信息,其中使用以下方法檢索UserId:
System.Web.Security.Membership.GetUser();
但是當以另一個用戶身份登錄時,在另一個公司, Company.Get()。CompanyId將從第一家公司返回Guid。
我是否錯過了使用靜態字段的觀點,還是有其他原因? 我通過將代碼隱藏中的_CompanyId的所有引用替換為Company.Get()。CompanyId來進行快速修復,但我修復了它,但這不是一個很好的解決方案。
靜態變量值在應用程序級別持久存在,因此跨用戶方式。 您應該使用會話來存儲您的信息。 在重新分配值,應用程序重新啟動等之前,靜態變量值不會更改。
您應該使用HttpContext.Current來存儲會話級變量。 靜態變量對Web應用程序中的所有會話都是可見的。
從字段定義中刪除static
應該可以為您提供所需的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.