Bir siteyi kapatmak, dosyaları dağıtmak ve siteyi yeniden açmak için izin veren bir toplu iş komut dosyası var.
- Uygulama havuzunu durdurma - çalışıyor
- Web sitesini durdurun - çalışıyor
- Dosyaları dağıtma - çalışır
- Uygulama Havuzunu Başlat - yalnızca bazen çalışır!
- Web sitesini başlat - daha önce çalışırsa çalışır
Windows Server 2012 R2 çalıştırıyorum ve toplu komut dosyası bir Octopus Deploy tentacle tarafından yürütülür.
Başarısız olduğu hat:
Start-WebAppPool -Name $appPoolName
$ AppPoolName nerede live.website.com
Bu çizgi bazen çalışır, ancak diğerleri değil ve herhangi bir düzende tutarlı değildir.
Diğer sunucularda çalışan aynı komut dosyası var. Uygulama Bilgileri hizmetinin çalışıp çalışmadığını ve iyi çalışıp çalışmadığını kontrol ettim. Olay görüntüleyicide hiçbir sistem günlüğü yok.
Her ne kadar, Start-WebAppPool çağrıldığında yükseltilen bu bir uygulama hatası var:
ERROR + Start-WebAppPool -Name $appPoolName
ERROR start-webitem : The service cannot accept control messages at this time.
Bunun neden olabileceğini bilen var mı? Ben bir "Başladı" durumuna kadar bir do-while döngü yazmaya çalıştım, ama sonsuza kadar başarısız döngüler.
Güncelleme
Uygulama havuzunu kapattığımda işlemin durmadığı anlaşılıyor.
Uygulama havuzunu durdurduktan sonra işlem neden devam ediyor? Kelimenin tam anlamıyla durmadan çalışmaya devam ediyor.
Sabit!
Bu yüzden - aşağıdaki yorumları izleyerek, uygulama havuzunu durdurduğumda, komut dosyasına devam etmeden önce tamamen durmuş durumda olduğundan emin olun.
Bu şimdi var ve tamamen çalışıyor komut dosyası:
# 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" )