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