我目前正在ASP.NET網站上工作。在我的一個頁面中,我有一個用於當前登錄用戶的CompanyId的靜態字段。asp.net web站點中的靜態字段問題
private static Guid _CompanyId = Company.Get().CompanyId;
Company.Get()返回有關公司的信息,當前登錄的用戶,其中用戶標識是利用檢索到:
System.Web.Security.Membership.GetUser();
但作爲其他用戶登錄時,在antoher公司,Company.Get()。CompanyId將從第一家公司返回Guid。
我錯過了使用靜態字段的要點,還是這有其他原因? 我修復了這個問題,在我的代碼中替換了所有對_CompanyId的引用,用Company.Get()。CompanyId來快速修復,但這不是一個很好的解決方案。
使用HttpContext.Current.Session來存儲每個用戶,每個會話變量..同意,靜態變量對當前所有用戶可見服務器。 在webfarm環境中,將變量存儲在HttpContext.Current.Items集合中將不允許該數據與用戶一起傳播到服務器場中的另一臺服務器。 –
靜態變量不會與用戶一起旅行,但可以使用進程外會話存儲在網站羣中的服務器之間共享會話。 Microsoft Velocity(http://msdn.microsoft.com/en-us/data/cc655792.aspx)正在成爲一個出色的分佈式緩存解決方案。 –
但是這個解決方案安全嗎?我需要加密內容嗎?公司編號絕對不能改變 – sshow