Ошибка «Web Deploy не может изменить файл в месте назначения, так как он заблокирован внешним процессом» в развертывании Octopus - PullRequest
0 голосов
/ 08 января 2019

Мы внедряем в Azure, используя Octopus deploy. Мы используем его уже более года, и внезапно (около 3 недель назад) мы начали получать ошибки при нескольких развертываниях.

Microsoft.Web.Deployment.DeploymentDetailedClientServerException: Web Deploy не может изменить файл msvcr120.dll в месте назначения, поскольку он заблокирован внешним процессом. Чтобы разрешить операцию публикации, вам может потребоваться либо перезапустить приложение, чтобы снять блокировку, либо использовать обработчик правил AppOffline для приложений .Net при следующей попытке публикации. Узнайте больше на: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE

У нас запущено веб-приложение, и оно всегда включено, и у нас установлено в приложении значение «MSDEPLOY_RENAME_LOCKED_FILES», равное 1, что теоретически предотвращает это.

Кто-нибудь знает, было ли что-то изменено у лазури или осьминога?

1 Ответ

0 голосов
/ 10 января 2019

Существует ряд причин, по которым файлы могут быть заблокированы во время развертывания. Вы сможете получить представление о блокировке файлов, используя kudu process explorer , доступ к которому можно получить с помощью URL {yoursite}.scm.azurewebsites.net.

.

Чтобы вообще избежать проблемы с блокировкой, вы можете использовать слоты для развертывания без простоев, если это вариант для вас. В этом случае вы можете остановить сайт или включить приложение в автономном режиме, которое должно разблокировать любые файлы и разрешить успешное развертывание, после чего при смене слота развертывание будет активным. App Offline предпочтительнее, чем MSDEPLOY_RENAME_LOCKED_FILES, но при развертывании приложение отключается. Octopus также поддерживает это в качестве опции на самом шаге Deploy an Azure Web App, поэтому стоит попробовать даже без слотов.

Вы можете использовать пользовательские сценарии до / после развертывания как часть своих Deploy an Azure Web App, чтобы использовать Stop-AzureRmWebAppSlot, Start-AzureRmWebAppSlot и Switch-AzureRmWebAppSlot команды Powershell Командлеты Azure для достижения вышеизложенного.

Альтернативой может быть использование zip-развертываний, однако у шага Deploy an Azure Web App Octopus пока нет первоклассной поддержки для этого. Это все еще может быть достигнуто с помощью Run an Azure PowerShell Script вместе со ссылками на пакеты, если это то, что вы хотите сделать.

...