Независимо от того, используете ли вы PHP, ASP, ASP.NET и т. Д., Встроенная поддержка развертывания транзакций в IIS отсутствует.
Самый простой подход состоит в том, чтобы иметь на своем веб-сервере две физические папки и (необязательно два веб-сайта - один рабочий, один тестовый), например:
c:\websites\myapp\dep1
c:\websites\myapp\dep2
Первоначально ваш сайт будет иметь физический путь, указывающий на c:\websites\myapp\dep1
.
Когда вы развертываете свою последнюю сборку, вы развертываете в c:\websites\myapp\dep2
. Когда вы закончите, просто переключите физический путь к производственному сайту в эту папку. Это означает, что у вас все еще есть исходный сайт, и вы можете вернуться к нему, если по какой-либо причине новый код не будет работать.
В следующий раз, когда вы выполните развертывание, вы развернете в c:\websites\myapp\dep1
и после этого переключите рабочий сайт в эту папку.
При желании вы можете иметь тестовый сайт, который указывает на папку, в которую вы развертываете, чтобы вы могли убедиться, что сайт работает, прежде чем переключать ваш рабочий сайт.
Это все может быть написано в сценарии.
Вот некоторые связанные материалы, которые могут представлять интерес:
Публикация / загрузка новой DLL в IIS: веб-сайт не работает во время загрузки
Возможно ли плавное развертывание с компонентными приложениями ASP.NET MVC?
Роб Конери также написал отличный пост в блоге об отсутствии достойной истории развертывания приложения ASP.NET. Вы должны пройтись по комментариям, некоторые из которых довольно проницательны:
Необходимо исправить развертывание ASP.NET
Создание конструктивного подхода к развертыванию ASP.NET