2016-07-23 3 views
0

私は使用するすべてのセッション変数を持つクラスを持っています。スレッドセーフであるかどうか教えてください。セッションにアクセスするための静的クラス

public static class AppSession 
    { 
     private const string UserIdKey = "UserId"; 
     public static int UserId 
     { 
      get { return GetSession<int>(UserIdKey); } 
      set { SetSession(UserIdKey, value); } 
     } 

     private static T GetSession<T>(string key) 
     { 
      var currentSession = HttpContext.Current.Session; 

      if (currentSession == null) return default(T); 

      if (currentSession[key] != null) 
      return (T) currentSession[key]; 

      return default(T); 
    } 
} 

プロパティAppSession.UserIdにアクセスすると、スレッドセーフになります。

答えて

0

はいです。それぞれの要求は独自のセッションを持ち、セッションはスレッドセーフです。

"セッション状態モジュールは、リーダ/ライターのロック機構を実装し、状態値へのアクセスをキューに入れます。セッション状態書き込みアクセス権を持つページ要求が終了するまでセッション上のライターロック。

https://msdn.microsoft.com/en-us/library/aa479041.aspx?f=255&MSPPError=-2147217396

関連する問題