azurew网站持续部署 - Web Deploy无法修改目标上的文件“XXX”,因为它已被外部进程锁定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了azurew网站持续部署 - Web Deploy无法修改目标上的文件“XXX”,因为它已被外部进程锁定相关的知识,希望对你有一定的参考价值。

尝试通过TFS持续部署部署azure网站时遇到以下错误。

我正在使用TfvcContinousDeploymentTemplate.12.xaml构建定义模板。

异常消息:Web Deploy无法修改目标上的文件“Antlr3.Runtime.dll”,因为它已被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下次发布尝试时使用.Net应用程序的AppOffline规则处理程序。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE。 (输入DeploymentDetailedException)

我已经完成了建议和添加的内容

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

发布配置文件,但它没有让应用程序脱机,因为我得到相同的错误。

以下是我的构建定义的视图,其中设置为使用发布配置文件和应用程序离线设置。

答案

您遇到了Azure和.NET的限制

建议重新启动您的应用程序。这可以通过更改环境变量来完成,而环境变量又强制iis重新启动。

例如:在天蓝色仪表板中:

Set COR_ENABLE_PROFILING = 0

然后再部署

 Set COR_ENABLE_PROFILING = 1

你可以找到这个问题的描述here

另一答案

我知道这是一个古老的话题。但我有自己的这个问题,并在Azure中解决了它。

将MSDEPLOY_RENAME_LOCKED_FILES = 1添加到Azure中的设置。

Azure settings

另一答案

如果要在部署之前和之后自动停止和启动Azure App Service,那么如果您使用VSTS,此任务现在可用(如果您使用的是TFS,请查找带有市场任务的提示)在其中一条评论中)

要利用这些任务:

  1. 在VSTS的“发布”部分中,将“任务”添加到“Azure应用服务管理(预览) - Azure应用服务的启动,停止,重新启动或插槽交换”类型的版本定义中
  2. 在创建的任务中,选择操作(对于第一个任务,选择“停止应用程序服务”)
  3. 在部署任务之前拖放此任务,并在部署任务后面添加“启动应用程序服务”任务
  4. 在任务设置中,您还可以检查这是否仅应用于Azure App Service的特定插槽(例如“Stage”)

配置完这两个额外的任务后,它对我来说很好。

(...顺便说一句,VSTS Build和CI现在还通过选择Agent“HOST VS 2017”支持使用VS2017制作的ASP.NET CORE版本)

另一答案

如果有任何自动选项来执行以下3个步骤,那应该有效。

  1. 停止应用服务
  2. 部署代码
  3. 启动应用服务

以上是关于azurew网站持续部署 - Web Deploy无法修改目标上的文件“XXX”,因为它已被外部进程锁定的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio使用Web Deploy远程发布网站及其配置

Web Deploy发布网站一条龙解决方案

持续集成之 Jenkins 通过 Deploy 插件热部署 java 程序

如何在被 capistrano 禁用时访问 rails 应用程序,使用 deploy:web:disable 来更新内容?

Hudson + SVN + Maven 持续集成实现自动化编译打包部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

Web Deploy部署IIS