0

一連の静的変数を設定しました

public class globalvars
{
      /// <summary>
      /// Is user logged in
      /// </summary>
      public static string strUserName
      {
          get;
          set;
      }
}

そして、プロジェクト全体でそれらを使用しました

public class logintowebsite : CustomerMappings
{


  public static void QuickLoginCheck()
   {
       try
       {
           LoginDetails user = ActiveSubsite.Instance.SubsiteSettings.CurrentUser;
           globalvars.strUserName = "Bert";

       }
       catch
       {
           globalvars.strUserName = "Ernie";
       }

}

問題は、2 人のユーザーが同時にページを使用している場合、最初のユーザーの詳細が 2 番目のユーザーによって上書きされることです。

これが発生している理由についてのアイデア。

4

3 に答える 3

6

2人のユーザーが同時にページを使用している場合、最初のユーザーの詳細は、で置き換えられるため、2番目のユーザーによって上書きされます。これが発生する可能性がある理由。

はい、ですからstatic

すべての要求は異なるスレッドであるため、すべての要求間で静的変数を共有したくない場合は、ASP.NET(私が想定)で静的変数を使用しないでください。

代わりに使用できますSession

于 2012-12-18T15:04:27.353 に答える
2

これはシングルトンパターンの場合です。セッション変数/Cookie/その他のキャッシュパターンを使用して、ユーザーごとに一意にする必要があります

于 2012-12-18T15:06:12.033 に答える
1

strUserName静的です。strUserNameつまり、すべてに 1つしかないということです。globalvars

何かを宣言することで、次のstaticようなものを呼び出すことができますSomeClass.SomeStaticVarName-に到達するためにインスタンスをSomeClass作成する必要はありませんSomeStaticVarName

私が学校にいたとき、静的の概念に苦労しました。もっと良い例が必要な場合はお知らせください。

于 2012-12-18T15:04:20.307 に答える