Я должен отобразиться, сколько пользователей просматривает мой сайт. Сайт работает на iis7, и мы используем asp.net 3.5.
Является количество активных сессий хорошим способом пойти? Число не должно быть очень точным.
Никакая история не необходима, я просто хочу знать, сколько пользователей онлайн прямо сейчас, и дисплей это на самой странице.
Для этого можно использовать счетчики производительности Windows (perfmon)
Приложения ASP.NET> Счетчик активных сеансов.
Вы можете получить доступ к этим счетчикам производительности, используя пространство имен System.Diagnostics.
Этот код сработал для меня:
PerformanceCounter pc = new PerformanceCounter("ASP.NET Applications",
"Sessions Active", "__Total__", "MYSERVERHOSTNAME.domain");
while (true)
{
Console.WriteLine(pc.NextValue());
System.Threading.Thread.Sleep(1000);
}
У меня была эта проблема, поэтому если счетчик кажется слишком высоким, посмотрите сюда: http://support.microsoft.com/kb/969722
Как правило, вы должны определить, что вы имеете в виду под количеством пользователей в сети.
Например, сеансы обычно длятся заранее определенной продолжительности, например 30 минут. В зависимости от того, как долго вы ожидаете, что пользователи будут на вашем сайте, продолжительность сеанса может быть в значительной степени связана с временем простоя, когда пользователя нет на вашем сайте.
Как правило, вам нужны люди, которые были в сети за последние n минут. Сеансы дают вам эту статистику за один период времени (настроенное истечение срока действия сеанса), но есть много других временных показателей, которые потенциально могут быть более актуальными.
Один из способов добиться этого - просто заставить журналы IIS помещать свои данные в таблицу в вашей базе данных, а не в локальной файловой системе. Это довольно легко настроить на уровне веб-сервера.
Затем вы можете легко построить график и показать использование в течение дня, текущего, еженедельного и т. Д.
Конечно, если у вас есть сайт с высокой посещаемостью, это приведет к огромному количеству собранных данных.