IIS'de appcmd aracılığıyla fiziksel yolu değiştirme etkinleştirilmez


9

IIS 7.5'te aşağıdakilerden oluşan basit bir dağıtım sistemimiz olan bir sorunla karşılaştık:

Üç klasörden oluşan yeni bir webroot zip dosyası oluşturun:

Api
Site
Manager

Bu, yeni bir klasöre açılır (diyelim ki "SITE_REV1" diyoruz) ve aşağıdakileri çağıran bir komut dosyası içeriyor (her webroot için bir tane):

C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"

Bu genellikle 9/10 kez çalışır. Bazı durumlarda, webroot doğru bir şekilde güncellenmiş gibi görünüyor (IIS Yöneticisi'nde temel ayarları incelersem, yol doğru görünüyor), ancak söz konusu çalışan site aslında eski konuma işaret ediliyor. "Düzeltmeyi" başardığımız tek yol IIS sıfırlaması kullanmaktır. Söz konusu uygulama havuzunu geri dönüştürmek yeterli değildir.

Bazen yeniden başlatma yapmak bile gerekebilir, ancak bunun doğru olduğundan% 100 emin değilim (sorunu her zaman kendim çözmedim).

Komut dosyasını, appcmd'de bir aksaklık olduğunu umarak Powershell ve Web-Yönetim modülünü kullanarak yeniden yazdım, ancak aynı sorun ortaya çıkıyor.

Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"

Kimse böyle bir şey yaşadı mı? Neler olup bittiğine dair bir ipucu var mı ve bu sorunu önlemek için neler yapabilirim? IIS sıfırlaması yapmak bizim için gerçekten iyi bir seçenek değildir, çünkü değişiklikleri tek bir sitede her denemeye ve dağıtmaya çalıştığımızda sunucudaki tüm siteleri etkiler.

DÜZENLEME: IIS Yöneticisi'nde sitenin başlatılması / durdurulması (uygulama havuzu DEĞİL) hatalı fiziksel yolu çözdüğünü belirledik, ancak siteyi appcmd kullanarak durdurursam, fiziksel yolu değiştirir ve başlatırsam, yine de aynı konular. Boştayım ...


1
Çalışmadığı zamanlarda, isteklerin çakışan rotasyon yoluyla eski uygulama havuzu tarafından sunulması mümkün mü? Sitenizin çalışma süresi gereksinimlerinden emin değilsiniz, ancak çakışan rotasyonu devre dışı bırakmayı ve dağıtım komut dosyanıza bir uygulama havuzu geri dönüşüm komutu eklemeyi deneyebilirsiniz.
explunit

Hayır, sonraki tüm istekler eski web kökünden sunulur, hatta bir uygulama geri dönüşümü bile uygulamayı eski kökünden yeniden yükler. Bir IIS sıfırlaması, geri yüklemeyi başardığımız tek yöntemdir. Bu, applicationHost.config'in güncellenmiş olması gibi (IIS yöneticisi doğru yolu gösterdiğinden), ancak IIS sunucusunun kendisi önceki yapılandırmadan çalışır ...
jishi

ApplicationHost.config içinde bir söz bulamıyorum, bu yüzden varsayılan "yanlış" olduğunu varsayalım?
jishi

Tamam, disallowOverlappingRotation = true, eski uygulama havuzunun uzun süren bir iş parçacığı veya başka bir şey nedeniyle kapatılmayabileceğini düşünüyordu. Bu yüzden IIS Reset'i tamamen temizlemek için gerekli olacaktır. İlginç bir soru - hangi cevapların ortaya çıktığını merak edeceksiniz.
explunit

Bir uygulama havuzu geri dönüşümünün durdur / başlat ile aynı olmadığını unutmayın. Bu yöntemi denediniz mi? Unutmayın, bu tüm mevcut bağlantıları öldürür ve uygulama havuzu yeniden başlatılıncaya kadar siteyi kullanılamaz duruma getirir (hata 500).
John Homer

Yanıtlar:


0

IIS Yöneticisi'nden fiziksel yolu değiştirmek doğru ve anında çalışıyor mu?

Aşağıdaki komutu denemek isteyebilirsiniz. Sözdizimi farklıysa, aynı sonuca sahip olmalıdır, ancak IIS'nin değişiklikleri almasına neden olan dahili olarak biraz farklı çalışır (daha iyi):

C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"


AFAIK, IIS yöneticisinde manuel olarak değiştirdiğimizde hiçbir sorun yaşamadık, yalnızca programlı olarak.
jishi

0

Uygulama havuzu geri dönüşümü site bazında yeterli olmalıdır. Bunlar bağımsız süreçlerdir. Makaleler ve işlemler çok sık iisreset kullanımını destekler. Bir site için uygulama havuzunu durdurma / başlatma bir seçenek midir? Bu tek bir sunucu çözümü mü ve site için kesinti süresini en aza indirmeye mi çalışıyorsunuz? Yapılandırma değişikliklerinde geri dönüşümü devre dışı bırakma seçeneği vardır. Sonra elle geri dönüşüm yapabilirsiniz. Sorun oluştuğunda, applicationHost.config dosyasında ne listelenir?


% 100 emin değilim, ancak IIS Yöneticisi yeni yolu listelediğinden, applicationHost.config dosyasının güncel olduğunu varsayalım. Ancak, işlem geri dönüştürüldüğünde, yeni yapılandırılmış değerleri kullanmıyormuş gibi görünür. Bu sadece ara sıra gerçekleştiği için zamanında gidermek zordur.
jishi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.