У мене є пакетний сценарій, який дозволяє мені вимкнути сайт, розгорнути файли та знову ввімкнути сайт.
- Зупинити пул додатків - працює
- Зупинити веб-сайт - працює
- Розгортання файлів - працює
- Запустити пул додатків - працює лише іноді!
- Запуск веб-сайту - працює, якщо попередні роботи
Я запускаю Windows Server 2012 R2, а пакетний сценарій виконується щупальцем Octopus Deploy.
Лінія, на яку вона провалюється, це:
Start-WebAppPool -Name $appPoolName
Де $ appPoolName - live.website.com
Цей рядок працює іноді, але не для інших, і не відповідає жодній схемі.
У мене той самий сценарій, що працює на інших серверах. Я перевірив, чи працює служба інформації про додатки, і чи працює вона нормально. У переглядачі подій немає системних журналів.
Хоча, у мене є одна помилка програми, яка виникає, коли викликається Start-WebAppPool:
ERROR + Start-WebAppPool -Name $appPoolName
ERROR start-webitem : The service cannot accept control messages at this time.
Хтось знає, чому це може статися? Я намагався записати цикл виконання часу, поки він не перебуває у "Початковому" стані, але цикл назавжди виходить з ладу.
Оновлення
Виявляється, процес не припиняється, коли я вимикаю пул програм.
Чому процес продовжуватиметься після зупинки пулу програм? Він буквально продовжує бігати, не зупиняючись.
Виправлено!
Отже - слідуючи коментарям нижче, коли я зупиняю пул додатків, я переконуюсь, що він повністю зупинений, перш ніж продовжувати сценарій.
Це сценарій, який я зараз маю і працює повністю:
# Load IIS module:
Import-Module WebAdministration
# Get AppPool Name
$appPoolName = $OctopusParameters['appPoolName']
if ( (Get-WebAppPoolState -Name $appPoolName).Value -eq "Stopped" )
{
Write-Host "AppPool already stopped: " + $appPoolName
}
else
{
Write-Host "Shutting down the AppPool: " + $appPoolName
Write-Host (Get-WebAppPoolState $appPoolName).Value
# Signal to stop.
Stop-WebAppPool -Name $appPoolName
}
do
{
Write-Host (Get-WebAppPoolState $appPoolName).Value
Start-Sleep -Seconds 1
}
until ( (Get-WebAppPoolState -Name $appPoolName).Value -eq "Stopped" )