Определение 'активного' пользовательского количества сайта ASP.NET

Проблема оказалась глупой ошибкой. Файл был сохранен со значением 'name' (file.Name + "comment.xlsx", но отправитель загрузки / электронной почты искал file.Name + ".xlsx" (в его имени не было "comment")

5
задан Keltex 26 March 2009 в 15:22
поделиться

7 ответов

Веб-сайт регистрирует пользователя в? Если это делает, то можно обновить поле "Last Visit" в пользовательской таблице каждый раз, когда они запрашивают новую страницу, и затем каждый час, просто делают SQL-запрос, который захватывает всех, у кого есть "Последнее Посещение" метка времени в течение прошлых 15 минут или так (предполагаемый в настоящее время быть на сайте).

Если Вы не сделали, чтобы люди вошли в систему, Вы могли бы столь же легко сделать это IP-адресом вместо имени пользователя. С этим методом, тем не менее, можно столкнуться с некоторыми проблемами прокси (т.е. многочисленные пользователи от той же корпоративной сети могут все произойти из единственного IP-адреса, таким образом, они только рассчитывают как один пользователь в общих количествах), но это должно быть минимально.

8
ответ дан 18 December 2019 в 10:49
поделиться

Этот вид зависит от Вашего сайта. Если Ваше использование Поставщиков Членства ASP.NET существует метод: Membership.GetNumberOfUsersOnline() который может сказать Вам, сколько вошло в систему пользователи, там. Я полагаю, что существуют также счетчики производительности. Понятие зарегистрированного пользователя является пользователем, который сделал что-то в течение прошлых x минут, где x настраивается.

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

Править

Именно так Вы знаете, что поставщики Членства ASP SQL реализуют это путем записи даты действия на поле в DB. Это, когда просто запрашивает его для всего действия в течение x минут.

Я добавил клиентскую функцию опроса, которая поражает наш сервер каждые 2 минуты, поэтому в то время как пользователь сидит на странице, я знаю, что они там, даже если нет никакого действия. Это также позволило мне вынудить пользователя покинуть систему, обеспечивает, метод передают другие системные сообщения. Довольно хороший.

3
ответ дан 18 December 2019 в 10:49
поделиться

Я думаю, что я использовал в прошлом, были функции Global.asax, главным образом центрирующиеся вокруг Session_Start и Session_End, увеличивая количество с Запуском, и затем конец немного хитер из-за тайм-аута сессии. Если Вы не заинтересованы много с тем, как точно точный количество затем, можно остановиться здесь.

Если не затем Вы, вероятно, использовали бы комбинацию события javascript onUnload со своего рода запросом ajax, чтобы делать недействительным сессию и вычесть пользователя. Событие должно было бы видеть, оставлял ли пользователь на самом деле страницу или просто шел в другую страницу на сайте.

Так или иначе запустите там. Я не забываю иметь отношение к сайтам ASP, таким образом, существует определенно некоторая информация там об этом методе.

1
ответ дан 18 December 2019 в 10:49
поделиться

Существует статистика монитора производительности для Сессий, Активных в объектах управления ASP.NET, и можно отследить все экземпляры или отдельные приложения. Можно получить доступ к этой статистике через Административные средстваПроизводительность, или программно через WMI.

Очень простой сценарий PowerShell для получения такого общего количества таких счетчиков:

(Get-WmiObject Win32_PerfRawData_ASPNET_ASPNETApplications SessionsActive).SessionsActive

Фильтр должен смочь получить статистику для определенного сайта.

1
ответ дан 18 December 2019 в 10:49
поделиться

Сначала тайм-аут Сессии набора в течение 1 минуты.

Создайте простую heartbeat.aspx страницу без содержимого HTML просто следующий код JavaScript:

<html>
  <head>
  <script language="javascript">
  function reloadPage()
  {
    window.navigate("heartbeat.aspx");
  }
  </script>
  </head>
<body onload="window. setTimeout(‘reloadPage()’, 30000)">
</body>
</html>

Это будет повторно запрашивать себя каждые 30 секунд и поддерживать сессию.

Помещенная heatbeat.aspx страница в скрытом кадре.

Для получения пользовательского количества просто получают количество сессии при помощи статического счетчика в событиях Session_Start и Session_End в Global.asax.

0
ответ дан 18 December 2019 в 10:49
поделиться

При использовании состояния сеанса InProc можно сделать это как это в global.asax

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    Application("ActiveSessionCount") = 0
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    Application("ActiveSessionCount") += 1
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    Application("ActiveSessionCount") -= 1
End Sub

Получить доступ к значению на веб-форме так же просто

Dim Count as Integer = Application("ActiveSessionCount")
0
ответ дан 18 December 2019 в 10:49
поделиться

При использовании SQL Server для хранения сеанса (например, режим - «SQLServer» в web.config), вы не можете использовать решение, основанное на Session_End в global.asax , поскольку метод никогда не будет вызван.

Однако, если предположить, что агент SQL правильно выполняет задание DeleteExpiredSessions (что должно быть по умолчанию при установке состояния SQL), вы можете просто запустить следующий SQL для Сеанс Db:

SELECT COUNT(SessionId) FROM ASPStateTempSessions
2
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: