【问题标题】:Azure Function: Publish fails with message "Web Deploy cannot modify the file on the Destination because it is locked by an external process."Azure 功能:发布失败,并显示消息“Web 部署无法修改目标上的文件,因为它已被外部进程锁定。”
【发布时间】:2018-01-18 20:42:58
【问题描述】:

我正在开发一个 Azure Functions 项目,当我第一次发布时,好的。 然后我再次发布,出现这个错误:

Web Deploy 无法修改文件“FunctionApp5.dll” 目的地,因为它被外部进程锁定。为了 允许发布操作成功,您可能需要重新启动 您的应用程序释放锁,或使用 AppOffline 规则 .Net 应用程序在您下一次发布尝试时的处理程序。学习 更多在: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.

只有进入 Azure 门户才会发布,然后重启这个 Azure Function App

【问题讨论】:

标签: azure-functions


【解决方案1】:

设置

MSDEPLOY_RENAME_LOCKED_FILES=1 

在 Azure Function Application Settings 中通常会解决这个问题

这也可以在 Visual Studio 中的发布 -> 应用程序设置中完成:

【讨论】:

  • 这应该是默认的恕我直言,这个答案应该被标记为解决方案。
  • 如果您使用“插槽部署”,则必须为每个插槽执行此操作。
  • 我在尝试部署 Azure Functions 时经常收到此错误。我真的希望这是 Microsoft 解决的重中之重。
  • 只有在 Azure 中打开函数应用程序(即监控函数或其他内容)时才会出现此错误。关闭函数应用并重新发布成功。
  • 如果我的工程师试图提出这种解决方案,他们就会被解雇。可怜的微软。
【解决方案2】:

我的 Azure Function 在 V2 中,并被 FILE_IN_USE 锁定。

对此有一个未解决的问题: https://github.com/Azure/azure-functions-host/issues/569

根据 Paul Batum 9 月 6 日的评论:

“在 Functions V2 中没有影子复制行为(因为它在 .NET 核心中不存在),因此更有可能遇到锁定问题。但是我们已经实现了对通过提供的“使应用程序脱机”功能的支持msdeploy。"

所以我检查了让应用离线并尝试了,当我重新部署时文件没有被锁定。

【讨论】:

    【解决方案3】:

    按照此article,您还可以尝试在 Web Deploy pubxml 中添加此指令,以指示在部署时使 Function 应用脱机:

    <EnableMsDeployAppOffline>True</EnableMsDeployAppOffline>

    【讨论】:

      【解决方案4】:

      更新的回复:以下是一些文档,介绍了文件被锁定时可以采取的步骤(除了手动重新启动应用程序)。 https://github.com/projectkudu/kudu/wiki/Dealing-with-locked-files-during-deployment

      【讨论】:

        【解决方案5】:

        截至撰写本文时,如果您使用 Azure DevOps (VSTS) 部署应用程序,则可以在“Azure App Service Deploy”任务/步骤中选择“Run From Package” - 这在版本 4 中可用任务的“附加部署选项”节点下。

        此部署选项消除了文件锁定问题,因为它提供了原子性,因为应用程序指向新的 zip 文件,而不是在 wwwroot 下部署一堆松散的文件,其中一些可能被锁定。

        它为您提供了许多其他好处,如 here 所述。

        HTH

        【讨论】:

          【解决方案6】:

          转到 Azure 中的“函数”选项卡,然后按“重新启动”按钮。然后尝试在 Visual Studio 中再次发布。 有时关闭浏览器并再次打开它或这些事情的组合是必要的。

          这就是你需要做的。

          【讨论】:

            【解决方案7】:

            我只需要重新启动我的服务器, 并再次手动部署, 并且这次部署成功了!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-11-06
              • 1970-01-01
              • 1970-01-01
              • 2021-11-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多