【Azure 应用服务】VS2019发布应用到正在运行的App Service时失败问题的解决 - LuBu0505/My-Code GitHub Wiki

问题描述

在VS 2019中配置号App Service的Publish Profile后,发布应用出现错误。根据VS 2019中的输出消息可知有文件正在运行中,无法被替换,所以发布失败。 No alt text provided for this image

问题解决

根据消息提示 “The process cannot access the file because it it being used by anther process”, 因为当前App Service正在远行,所以需要先停止App Service,然后部署,最后启动应用。具体步骤为:

  1. 在Azrue Portal 上点一下“停止”
  2. 开始部署
  3. 部署完成后在Azrue Portal 上再点一下“开始”

如果在部署代码时候,感觉以上办法有些冗余。

方式一:可以在Project的根目录中(目标路径时是App Service中的wwwroot目录) 添加 App_Offline.htm 文件。

为什么这有帮助?

因为 ASP.NET 和 ASP.NET Core 都知道如何监听这个文件的出现,并自行关闭。 这会导致卸载所有资源,这通常会解锁所有文件。

当然,缺点是您的站点在部署期间不可用。

方式二:修改App Service的配置参数,启用 MSDEPLOY_RENAME_LOCKED_FILES=1 的配置。

如果在部署期间无法复制 DLL,这会导致 msdeploy 尝试重命名 DLL。 这通常有效,因为即使加载了 DLL,它们通常仍然可以重命名。 它使用 .delete 扩展名重命名它们,然后在下一轮清理。 No alt text provided for this image

问题参考

Dealing with locked files during deployment: https://github.com/projectkudu/kudu/wiki/Dealing-with-locked-files-during-deployment or https://www.cnblogs.com/lulight/articles/15207168.html

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: 【Azure 应用服务】

标签: MSDEPLOY_RENAME_LOCKED_FILESAzure DeveloperApp Service