Как просмотреть список активных пользователей, хранящихся в объектах сеанса на странице администратора - PullRequest
0 голосов
/ 10 октября 2011

Что я делаю, когда пользователь входит в систему, я сохраняю его имя пользователя в объекте сеанса.

. Теперь на странице администратора я хочу получить список АКТИВНЫХ ПОЛЬЗОВАТЕЛЕЙ (т.е.Приложение (имена пользователей в объектах сеанса)

Есть ли способ сделать это ..

???

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Объект Session недоступен вне его собственного сеанса.Если вам нужен администратор, чтобы видеть все активные сеансы, вам нужно использовать объект Application.Например, в global.asax:

protected void Application_Start(object sender, EventArgs e) {
  Application["Users"] = new List<string>;
}

Затем, чтобы добавить пользователя (возможно, когда они нажимают «Войти»):

Application.Lock();
((List<string>)Application["Users"]).Add(username);
Application.UnLock();

Вы также должны удалить пользователя вSession_End:

protected void Session_End(object sender, EventArgs e) {
  Application.Lock();
  ((List<string>)Application["Users"]).Remove(username);
  Application.UnLock();
}
0 голосов
/ 10 октября 2011

Исходя из вашего комментария к Давиде Пирасу, если вы храните Session["user"] =username, то вы сохраняете только один элемент, поскольку вы всегда используете один и тот же ключ.

Я бы, например, все поместил бы в List<string>.

На странице входа в систему примерно так:

List<string> activeUsers = Cache["ActiveUsers"] as List<string>;
if(activeUsers==null)
   activeUsers = new List<string>();
activeUsers.Add(username_of_person_logged_in);
Cache["active_users"]=activeUsers;

Затем на странице администратора ...

List<string> activeUsers = Cache["ActiveUsers"] as List<string>;
if(activeUsers!=null)
{
    foreach(var item in activeUsers)
    {
      //do something with them
    }
}

Примечание: Я изменил его на Cache , поскольку Cache используется всеми пользователями. Сессия не будет работать, так как она будет действительна только для каждого пользователя.Спасибо @CheckRaise за его комментарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...