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

Я размещаю веб-сайт Asp.Net в IIS 6.0

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

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

Мы не использовали Membership, а для SessionState установлено значение InProc

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

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

Ответы [ 5 ]

3 голосов
/ 26 марта 2012

Я не очень силен в 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 более пошаговым способом

2 голосов
/ 20 марта 2012

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

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

Нет необходимости в программировании или взломе.

1 голос
/ 22 марта 2012

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

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

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

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

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

Обновление:

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

1 голос
/ 16 марта 2012

Эй, тайм-аут сеанса не выполняется, если кто-то использует сайт ..

, поэтому не нужно беспокоиться

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

) Сеанс с IIS http://msdn.microsoft.com/en-us/library/ms525473(v=vs.90).aspx

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

0 голосов
/ 19 марта 2012

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

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