由于文件锁定(msvcr100.dll),无法将TFS CI构建到Azure Web App(应用服务)

戴尔

问题

尝试从TFS CI发布到Azure Web应用程序时遇到部署错误。文件被锁定,这将阻止更新版本。

病征

  • 手动发布(从Visual Studio内部发布Web Deploy)通常会成功。
  • 停止Web应用程序并进行发布可以使其成功,但是,如果我们需要每次都停止和启动Web App,这将破坏CI的意义。
  • CI发布到Web角色,而Worker角色似乎没有这个问题,我们只能在发布到Web Apps(以前是Web站点,当前的Azure Portal术语现在是App Service)时得到它。
  • 只有通过TFS从CI构建发布才会以这种方式持续失败。

错误

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时,似乎仅支持此配置。

Eddie Chen-MSFT

您可以在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Azure 应用服务 - 将文件作为应用程序发布的应用服务 azure 的输入

使用 MSDeploy 将 Web 应用程序部署到 Azure 应用服务

如何将文件夹从测试应用服务复制到 Azure 上的实时应用服务

错误:错误:无法将 Web 包部署到应用服务。错误请求(代码:400)

将 Azure 应用服务与应用服务环境集成

Terraform 无法创建 64 位 Azure 应用服务(Web 应用)

使用 Github Actions 将多项目 ASP.NET Core Web 应用程序部署到 Azure 应用服务

将超时发布100ish KB到Azure应用服务MVC

如何将文件夹发布到 Azure 应用服务?

将文件夹工件部署到Azure应用服务时出错

将数据从应用服务复制到 azure 文件共享

通过构建管道将ASP.NET应用部署到Azure应用服务

我可以使用带有 Web 应用服务的 Azure 文件存储吗?

将简单的Express应用部署到Azure应用服务

当将Azure DevOps CI / CD用于Linux Web应用程序时,如何仅将构建工件压缩并发布为zip文件,而不是复制到目录中

Umbraco 检查文件锁定 Azure 应用服务

将 Angular 项目从 GitHub 部署到 Azure 应用服务

如何为 Azure Web 应用服务安排 AppPool 刷新?

在 Azure Web 应用服务中使用 redis 作为容器

将 Koa 应用部署到 Azure 应用服务后无法上传到 Azure 存储

如何将WAR文件部署到使用Docker OPEN Liberty Image创建的Azure应用服务

Visual Studio 2019 IIS 配置文件创建破坏 Azure 应用服务的 web.config 文件

不使用 FTP 将文件从生成代理复制到应用服务

C#将文件从Azure应用服务推送到Bitbucket存储库?

将文件保存在 Azure 应用服务上并使其可从外部访问

无法从“免费服务”菜单创建 Azure 应用服务

Azure 应用服务无法加载 AngularJS5 应用

TFS 2015 缺少“部署 Azure 应用服务”任务

从 Google 域到 Azure Web 应用服务的域转发不屏蔽 URL