В процессе миграции одного моего веб-сервера IIS 6 с 30 или около того приложениями на новое оборудование. Исходя из опыта работы с Linux, я очень удивлен, насколько это сложно.
Поигравшись с msdeploy, я придумал эту команду, которая ДОЛЖНА работать (кстати, замена заключается в перемещении всего содержимого на диск C, поскольку на новом сервере нет раздела D):
C:\Program Files\IIS\Microsoft Web Deploy V2>msdeploy -verb:sync -source:webServer60,computerName=<IP>,userName=<USER>,password=<PASS> -replace:objectName=metaproperty,match="D:\\",replace="C:\\" -dest:webServer60 -enableLink:AppPoolExtension -whatif > msdeploy.log
Однако я получаю эту ошибку:
Error: The AppPoolNotFound dependency check found the AppPool '.Net 2' to be in use by the source data but not defined in source data or on the destination computer. Applications referencing this application pool will have configuration issues.
Ошибка: синхронизация была остановлена правилом DependencyCheckFailOnError, так как одна или несколько проверок зависимостей были запущены на уровне «Ошибка». Количество ошибок: 1.
«Полезные» люди на форумах IIS, которые, похоже, обслуживают ОЧЕНЬ маленьких пользователей, предлагают обходной путь «просто создайте пул приложений на целевой машине». Это непрактично, учитывая количество имеющихся у меня пулов приложений, умноженное на количество серверов в ферме. Конечно, есть способ попроще.
Извините, я понял, что в MetaBase на исходном сервере была случайная мошенническая запись для пула приложений ".Net 2", которого не существует. Как только это было удалено, команда заработала.