Как показать сколько пользователей в настоящий момент имеют активную сессию на сайте ASP.NET?
Как в ASP.NET показать на странице количество пользователей онлайн?
1
Спросил
Новые ответы
1
Если нужно выводить количество или имена авторизованных пользователей, то нужно использовать статичные методы класса Membership
:
// Возвращает количество авторизаванных пользователей
Membership.GetNumberOfUsersOnline();
// Возвращает коллекцию авторизованных пользователей
Membership.GetAllUsers();
Для функции Membership.GetAllUsers
есть перегруженный вариант, поддерживающий постраничный вывод.
1
Если нужно показать число активных пользователей на сайте (в том числе и не авторизованных), то можно хранить число пользователей в объекте глобальном Application и подписаться на события начала и окончания сессии в Global.asax:
void Application_Start(object sender, EventArgs e)
{
Application["UsersOnline"] = 0; 1
}
void Session_Start(object sender, EventArgs e)
{
var onlineUsersCount = 2
Convert.ToInt16(Application["UsersOnline"]);
Application["UsersOnline"] = (onlineUsersCount + 1).ToString();
}
void Session_End(object sender, EventArgs e)
{
var onlineUsersCount = 3
Convert.ToInt16(Application["UsersOnline"]);
Application["UsersOnline"] = (onlineUsersCount - 1).ToString();
}
- 1 — при запуске приложения устанавливаем счетчик в ноль.
- 2 — при старте новой сессии прибавляем к счетчику единицу.
- 3 — при окончании сессии отнимаем от счетчика единицу.
На странице отображаем значение счетчика:
private void Page_Load(object sender, System.EventArgs e)
{
onlineUsersCountLabel.Text = Application["OnlineUsers"];
}