Есть ли способ иметь глобальную переменную, которая не зависит от сеанса?Я хочу получить список всех подключений SignalR и идентификатор пользователя из БД.
Пока у меня есть что-то вроде этого:
public class SignalRUsersService : ISignalRUsersService
{
private int userId;
private readonly IHttpContextAccessor _accessor;
public List<ConnectedSignalR> SignalRUsers;
public SignalRUsersService( IHttpContextAccessor accessor)
{
_accessor = accessor;
try
{
userId = Convert.ToInt32(_accessor.HttpContext.Session.GetString("uID"));
}
catch
{
userId = 0;
}
SignalRUsers = new List<ConnectedSignalR>();
}
public void AddSignalRUser(string ConnID)
{
SignalRUsers.Add(new ConnectedSignalR()
{
ConnID = ConnID,
UserID = userId
});
}
public void RemoveSignalRUser(string ConnID)
{
var usr = SignalRUsers.Where(a => a.ConnID == ConnID).FirstOrDefault();
if (usr != null)
{
SignalRUsers.Remove(usr);
}
}
public List<ConnectedSignalR> GetSignalRUsers()
{
return SignalRUsers;
}
}
Проблема в том, что каждый раз, когда я используюинтерфейс, кажется, он повторно инициализирует мой список SignalRUsers.И даже если я нажимаю на данные в списке, я нахожу их пустыми, когда мне это нужно.
Зависит ли сеанс SignalRUsers?Или это просто вопрос неправильного использования интерфейса?
Любая помощь очень ценится.