我们正在使用Octopus部署将其部署到Azure。我们已经使用一年多了,突然之间(大约3周前)我们开始发现一些部署错误。
Microsoft.Web.Deployment.DeploymentDetailedClientServerException:Web Deploy无法修改目标上的文件“ msvcr120.dll”,因为它已被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下一次尝试发布时对.Net应用程序使用AppOffline规则处理程序。要了解更多信息,请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE
我们有一个始终运行的Web应用程序,并且我们将应用程序设置'MSDEPLOY_RENAME_LOCKED_FILES'设置为1,从理论上讲可以防止这种情况。
有人知道天蓝色或章鱼有变化吗?
答案 0 :(得分:0)
在部署过程中,文件可能被锁定的原因有很多。您应该能够通过使用kudu process explorer来了解什么是锁定文件,可以使用URL {yoursite}.scm.azurewebsites.net
来访问文件。
为了完全避免锁定问题,如果可以的话,您可以利用插槽来实现零停机时间部署。在这种情况下,您可以停止站点或启用App Offline,这应解锁任何文件并允许部署成功,然后通过插槽交换使部署生效。与使用App Offline
相比,首选MSDEPLOY_RENAME_LOCKED_FILES
,但是在部署过程中会使应用程序脱机。章鱼在Deploy an Azure Web App
步骤本身上也对此选项提供了支持,因此即使没有插槽也可能值得尝试。
您可以在Deploy an Azure Web App
中使用自定义的前/后部署脚本,以利用Stop-AzureRmWebAppSlot
,Start-AzureRmWebAppSlot
和Switch-AzureRmWebAppSlot
Powershell commands Azure Commandlet实现以上。
一种替代方法是使用zip部署,但是Deploy an Azure Web App
章鱼步骤尚未对此提供一流的支持。如果您要这样做,仍然可以使用Run an Azure PowerShell Script
和包引用来实现。