2016-07-23 14 views
0

Ich habe eine Klasse mit allen Sitzungsvariablen, die ich benutze. Können Sie mir bitte mitteilen, ob es Thread-sicher ist.Statische Klasse für den Zugriff auf Sitzung

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); 
    } 
} 

Beim Zugriff auf die Eigenschaft AppSession.UserId wird es threadsicher sein.

Antwort

0

Ja ist es. Jede Anfrage hat ihre eigene Sitzung, und die Sitzung ist threadsicher, zB:

"Das Sitzungsstatusmodul implementiert einen Lese-/Schreibsperrmechanismus und stellt den Zugriff auf Statuswerte in eine Warteschlange. Eine Seite mit Sitzungsstatus-Schreibzugriff wird gehalten Ein Writer sperrt die Sitzung, bis die Anfrage beendet wird. "

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

Verwandte Themen