Мы столкнулись с проблемой в IIS 7.5, где у нас есть простая система развертывания, которая состоит из следующего:
Создайте zip-файл нового webroot, состоящий из трех папок:
Api
Site
Manager
Это распаковывается в новую папку (скажем, мы называем это «SITE_REV1») и содержит скрипт, который вызывает следующее (по одному для каждого корня):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
Это обычно работает, в 9/10 раз. В некоторых случаях кажется, что веб-корень корректно обновляется (если я проверяю основные параметры в IIS Manager, путь выглядит правильным), но рассматриваемый работающий сайт фактически указывает на старое местоположение. Единственный способ, которым нам удалось «исправить это», - запустить сброс IIS. Недостаточно перезапустить рассматриваемый пул приложений.
Иногда кажется даже необходимым сделать перезагрузку, но я не уверен на 100%, что это точно (не всегда я сам решал проблему).
Я переписал скрипт, используя Powershell и модуль Web-администрирования, надеясь, что в appcmd произошел сбой, но возникает та же проблема.
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
Кто-нибудь испытывал что-то подобное? Кто-нибудь знает, что происходит, и что я могу сделать, чтобы предотвратить эту проблему? Выполнение сброса IIS не очень хороший вариант для нас, потому что это будет влиять на все сайты на сервере каждый раз, когда мы пытаемся внедрить изменения на одном сайте.
РЕДАКТИРОВАТЬ: мы определили, что запуск / остановка сайта (НЕ пул приложений) в IIS Manager устраняет ошибочный физический путь, но если я остановлю сайт с помощью appcmd, изменить физический путь, а затем запустить его, я все еще страдаю от те же проблемы. Я на пустом месте ...