現在、私はASP.NETのWebサイトで作業しています。私のページの1つでは、現在ログインしているユーザーのCompanyIdの静的フィールドがありました。asp.net web-siteのstaticフィールドの問題
private static Guid _CompanyId = Company.Get().CompanyId;
Company.Get()ユーザーIDを使用して取得され、現在ログインしているユーザーの会社に関する情報を返します。
System.Web.Security.Membership.GetUser();
しかしantoher会社では、別のユーザーとしてログイン、Company.Get()。CompanyIdは、最初の会社からGuidを返します。
私は静的フィールドの使用のポイントを逃したのですか、これに別の原因がありますか? 私のコードビハインドで_CompanyIdへのすべての参照を、Company.Get()。CompanyIdに置き換えて修正しましたが、これは本当に良い解決策ではありません。
HttpContext.Current.Sessionを使用して、セッションごとの変数を格納します。合意された静的変数は、サーバ。 Webファーム環境では、HttpContext.Current.Itemsコレクションに変数を格納しても、そのデータはユーザーと共にファーム内の別のサーバーに移動することはできません。 –
静的変数はユーザーと一緒には移動しませんが、アウトプロセスセッション記憶域を使用してWebファーム内のサーバー間でセッションを共有できます。 Microsoft Velocity(http://msdn.microsoft.com/en-us/data/cc655792.aspx)は、優れた分散キャッシングソリューションとして構成されています。 –
しかし、このソリューションは安全ですか?コンテンツを暗号化する必要はありますか? CompanyIdは何でも変えられてはいけません – sshow