Класс статического сеанса и несколько пользователей

Я создаю class для хранения идентификатора пользователя и роли пользователя в сеансе. Я не уверен, как этот class будет вести себя, когда одновременно будут находиться несколько пользователей. Кто-нибудь видит проблему с этим?

public static class SessionHandler { //*** Session String Values *********************** private static string _userID = "UserID"; private static string _userRole = "UserRole"; //*** Sets and Gets ********************************************************** public static string UserID { get { if (HttpContext.Current.Session[SessionHandler._userID] == null) { return string.Empty; } else { return HttpContext.Current.Session[SessionHandler._userID].ToString(); } } set { HttpContext.Current.Session[SessionHandler._userID] = value; } } public static string UserRole { get { if (HttpContext.Current.Session[SessionHandler._userRole] == null) { return string.Empty; } else { return HttpContext.Current.Session[SessionHandler._userRole].ToString(); } } set { HttpContext.Current.Session[SessionHandler._userRole] = value; } } } 

Код, который вы отправили, является точной копией некоторого кода, который у нас есть.

Он работает отлично уже 2 года.

Каждый доступ пользователей – это собственный сеанс. Каждый запрос, сделанный на сервер, представляет собой новый stream. Хотя два запроса одновременно, HttpContext.Current отличается для каждого из этих запросов.

Вы получите новый сеанс для каждого подключения. Ни один из двух пользователей не будет использовать сеанс. Каждое соединение будет иметь собственное значение SessionID . Пока пользователь остается на вашей странице (не закрывает браузер и т. Д.), Пользователь будет сохранять этот сеанс с одного запроса на другой.

Это будет отлично работать для пользователей с несколькими пользователями, получающих доступ к вашему приложению, поскольку будет существовать другой sessionid, сгенерированный для всех пользователей deffrent, обращающихся к приложению одновременно. Он будет работать аналогичным образом, если вы определили две разные переменные сеанса в вашей системе. Это будет похоже на состояние сеанса буксировки буфера, используя статический class-оболочку SessionHandler.