Получить количество запущенных сеансов из IIS для моего хостинга Asp.Net веб-сайт

Я принимаю Asp.Net веб-сайт в IIS 6.0

мы должны сбросить тайм-аут сеанса в интернете.config

мой клиент хочет, чтобы я сбросил его, только если сеанс не запущен (никто не использует сайт).

мы не использовали членство и SessionState имеет значение InProc

Как я узнаю, если кто-то использует сайт или любой сеанс работает.

Я не могу внести изменения в исходный код или любой другой файл, кроме интернета.конфигурации в размещенную вебсайт.

5 ответов


Я не очень хорош в PowerShell, поэтому, надеюсь, вы сможете найти правильный синтаксис. Но...

один из вариантов-запустить сценарий Powershell и проверить количество сеансов следующим образом:

обновление: изменено "общее количество сеансов" на "Активные сеансы"

write-host Getting performance counters ...

$perfCounterString = "\asp.net applications(__total__)\sessions active" 
$counter = get-counter -counter $perfCounterString 
$rawValue = $counter.CounterSamples[0].CookedValue 

write-host Session Count is $rawValue

if( $rawValue -gt 0)
{
   write-host Session are active - will not stop IIS
   exit
}

write-host Stopping IIS
stop-service "IISAdmin"

# Set values 
$webConfig = "d:\web.config"
$newTimeout = "20"

# Open file and change value
$doc = new-object System.Xml.XmlDocument
$doc.Load($webConfig)
$doc.SelectSingleNode("//sessionState").timeout = $newTimeout
$doc.Save($webConfig)

write-host Starting IIS
start-service "IISAdmin"
write-host Done!

сохраните это на рабочем столе как " ChangeIIS.ps1".

теперь Powershell не нравится, когда вы просто запускаете сценарии .Bat-файл. Вы должны предоставить доступ к процессу или пользователь по соображениям безопасности. Поэтому сделайте следующее:

  1. Откройте командную строку и запустите от имени администратора
  2. тип powershell
  3. тип Set-ExecutionPolicy -scope process Bypass
  4. тип sl <path to directory of .sp1 file> . sl [set-location] похоже на cd в командной строке
  5. тип $ '.\ChangeIIS.ps1'

он будет работать сейчас и сбросить значение.

вот ссылка на мой блог как я создал сценарий PowerShell в более Пошаговые моды


Проверьте файлы журналов IIS для вашего сайта и посмотрите, когда был сделан последний удар (фактическими пользователями, а не поисковыми ботами).

Если последний удар был старше текущего тайм-аута сеанса, то активных сеансов не существует. Это то, что вы на самом деле ищете, а не рассчитывать.

не требуется программирование или хаки.


Эй тайм-аут сеанса его не execuate если кто-то использует сайт..

Так что не нужно беспокоиться

(свойство Timeout указывает период ожидания, назначенный объекту сеанса для приложения, в минутах. Если пользователь не обновляет или не запрашивает страницу в течение периода ожидания, сеанс завершается.

) Сеанс с IIS http://msdn.microsoft.com/en-us/library/ms525473 (v=против 90).aspx

сеанс с конфигурационным файлом http://msdn.microsoft.com/en-us/library/ms178586.aspx


Я думаю, что простой ответ здесь "не возможно".. Ты живешь учишься, Смотри ответ на ASP.NET счетчики производительности. Мне очень интересно, как это идет (если он работает для вас), и если он дает вам определенные приложения данных (между совокупность всех приложений на коробке?).

даже предложение посмотреть файлы журнала не даст вам то, что вы хотите - как вы смотрите на файл журнала, как бы вы знали, что нет пользователя начало сеанса?

сеансы являются cookies для браузера. Итак, если вы посетите страницу 1 на своем веб-сайте, я уйду с вашего сайта и перейду на другой веб-сайт, а затем вернусь (до того, как вы установите значение тайм-аута)? Как бы вы это определили? В тот момент, когда я покинул ваш веб-сайт, вы не увидите "никакой" активности (какой бы монитор вы ни использовали), но это не означает, что мой сеанс "истек".

Это даже не должно быть так сложно - я посещаю ваш веб-сайт и начинаю читать ваш контент (не навигация, не делать ничего, что можно измерить/контролировать).

Я думаю, что нужно больше ясности в "цели" - как в том, что вы после? Цель сброса-это не настоящая "цель" того, чего вы хотите достичь.

обновление:

Я знаю, вы сказали, что не можете изменить исходный код, поэтому вы можете Надежда что он реализует Google Analytics. Если это так, вы можете посмотреть на реальном времени активность ваш сайт. Это, по крайней мере, дает вам "где-то" каким-то тривиальным образом. но так же, "магия" основана на печенье (что, следовательно, означает, что он все еще подвержен вопросам, которые я задал выше)


сохранить increesing и decreesing переменной приложения при старте сессии и сессии Конец событий. тогда у вас будет счетчик сеансов. если sesson count равен нулю, то вы можете сбросить вещь. всего хорошего.