我正在使用" Azure Web App部署"在VSTS中构建步骤以将ASP.NET Core API发布到Azure Web App:
有时,此步骤会出现以下错误:
[错误] Microsoft.Web.Deployment.DeploymentDetailedClientServerException: Web部署无法修改文件' MyProject.Api.exe'在...上 目的地,因为它被外部进程锁定。为了 允许发布操作成功,您可能需要重新启动 您的应用程序释放锁定,或使用AppOffline规则 下次发布尝试时.Net应用程序的处理程序。学习 更多: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE
This GitHub issue引发了同样的问题,但没有使用Azure Web App部署构建步骤的建议解决方案。
答案 0 :(得分:32)
根据Microsoft Github repo here中的一个单独的线程,有一个hacky解决方法,如果您将以下密钥添加到Azure Appsettings,它可以帮助解决锁定的文件部署错误:
MSDEPLOY_RENAME_LOCKED_FILES = 1
我不确定这个appsetting hack会支持多长时间,但它确实帮助我解决了这个问题。
答案 1 :(得分:8)
您可以创建两个Power Shell脚本:
stopapp.ps1:
param($websiteName)
$website = Get-AzureWebsite -Name $websiteName
Stop-AzureWebsite -Name $websiteName
startapp.ps1:
param($websiteName)
$website = Get-AzureWebsite -Name $websiteName
Start-AzureWebsite -Name $websiteName
然后添加一个" Azure PowerShell"之前和之后的任务" Azure Web App部署"任务是在部署之前停止Web应用程序并在部署后启动应用程序。
答案 2 :(得分:8)
答案 3 :(得分:3)
答案 4 :(得分:2)
答案 5 :(得分:2)
当我尝试发布Azure Function App时遇到了相同的错误。我遵循了this Microsoft文档,并执行了以下步骤。
在PropertyGroup标签中添加<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>
保存并重建您的解决方案
现在再次发布
如果这对您不起作用,则可以始终将Ben先生在回答中提到的MSDEPLOY_RENAME_LOCKED_FILES=1
添加到“应用程序”设置中。您可以从Visual Studio本身完成此操作。
希望有帮助
答案 6 :(得分:0)
asp.net核心项目有一些专门的任务,因为部署过程略有不同
你可以免费从市场上买到这些,查看DNX Tasks vsts marketplace
希望有所帮助!!
答案 7 :(得分:0)
Eddie的答案接近我所需要的,唯一缺少的是指定部署位置的方法:
stopapp.ps1
param($websiteName, $websiteSlot)
$website = Get-AzureWebsite -Name $websiteName -Slot $websiteSlot
Stop-AzureWebsite -Name $websiteName -Slot $websiteSlot
startapp.ps1
param($websiteName, $websiteSlot)
$website = Get-AzureWebsite -Name $websiteName -Slot $websiteSlot
Start-AzureWebsite -Name $websiteName -Slot $websiteSlot
然后在您的Azure PowerShell任务脚本参数可能是这样的:
-websiteName "{mywebsite}" -websiteSlot "{mydeploymentslot}"
答案 8 :(得分:0)
答案 9 :(得分:0)
Juste添加
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
到您的发布个人资料(.pubxml)。
答案 10 :(得分:0)
在打开太多蠕虫病毒之前,请等待30至60秒钟,然后尝试第二次发布您的应用程序。似乎出现这种情况有时是因为发出给服务的停止请求或者在服务完全停止之前返回,或者Visual Studio等待的时间不足以完成此操作。每次遇到问题时,第二次等待并重试发布都是有效的。
答案 11 :(得分:0)