问题
尝试从TFS CI发布到Azure Web应用程序时遇到部署错误。文件被锁定,这将阻止更新版本。
病征
错误
Web部署任务失败。(Web Deploy无法修改目标上的文件“ msvcr100.dll”,因为它已被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放该锁定,或使用下次尝试发布时,适用于.Net应用程序的AppOffline规则处理程序。有关更多信息,请访问:http : //go.microsoft.com/fwlink/?LinkId= 221672#ERROR_FILE_IN_USE 。)
链接上的信息不是很有帮助。
ERROR_FILE_IN_USE诊断–无法覆盖或删除目标文件,因为该文件当前正在使用中。解决方案–执行同步之前,请确保未使用目标文件。如果要将内容同步到IIS 7或更高版本上托管的网站(使用appHostConfig,iisApp或contentPath提供程序),请考虑通过启用appOffline规则使应用程序在同步期间脱机。
尝试的解决方案
编辑
发布时如何使Web应用脱机?使用EnableMSDeployAppOffline配置处理使应用程序脱机-不幸的是,仅当通过Visual Studio(而非CI)进行WebDeploy时,似乎仅支持此配置。
您可以在CI中使用Web Deploy v3来部署Web应用程序。
在Web Deploy V3中,我们添加了支持,以便在发布ASP.Net应用程序之前将其自动脱机。如果用户要确保其应用程序对文件(例如,一次仅允许一个连接到该文件的SQL CE sdf文件)没有被锁定的用户,或者希望确保访问者能够访问该文件,这将非常有用。他们的网站不会影响发布过程。发布过程完成后,App_Offline.htm文件将被删除,该站点将再次联机。
或者,您可以添加如下所示的PowerShell脚本,以将Web应用程序部署到Azure:
param($websiteName, $packOutput)
$website = Get-AzureWebsite -Name $websiteName
# get the scm url to use with MSDeploy. By default this will be the second in the array
$msdeployurl = $website.EnabledHostNames[1]
$publishProperties = @{'WebPublishMethod'='MSDeploy';
'MSDeployServiceUrl'=$msdeployurl;
'DeployIisAppPath'=$website.Name;
'Username'=$website.PublishingUsername;
'Password'=$website.PublishingPassword}
Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName
Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"
. $publishScript -publishProperties $publishProperties -packOutput $packOutput
Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName
参考来源:https : //msdn.microsoft.com/zh-cn/Library/vs/alm/Build/azure/deploy-aspnet5
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句