Мы столкнулись с проблемой в 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, изменить физический путь, а затем запустить его, я все еще страдаю от те же проблемы. Я на пустом месте ...
Ответы:
Правильно и сразу ли работает изменение физического пути из IIS Manager?
Вы можете попробовать следующую команду. Иными словами, синтаксис должен иметь тот же результат, но, возможно, он работает немного по-другому, заставляя IIS принимать изменения (лучше):
C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"
источник
Рециркуляция пула приложений должна быть достаточной для каждого сайта. Это независимые процессы. Слишком часто статьи и процессы продвигаются с использованием iisreset. Остановка / запуск пула приложений для одного сайта - это вариант? Это решение с одним сервером, и вы пытаетесь минимизировать время простоя сайта? Существует возможность отключить утилизацию при изменении конфигурации. Тогда вы можете вручную переработать. Когда возникает проблема, что указано в applicationHost.config?
источник