通过 msdeploy 发生 Azure Web App 部署错误 - ERROR_INSUFFICIENT_A CCESS_TO_SITE_FOLDER

问题描述 投票:0回答:9

我已经使用 msdeploy 部署到我的 Azure Web App 大约 4 个月了,上传网站的一切都很顺利。 直到最近,部署还没有出现任何错误。我现在在发布网站应用程序时收到“ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER”错误。

我成功更新网站的唯一方法是停止 Azure 上的 Web 应用程序,然后通过 Visual Studio 执行 Web 应用程序的发布。但如果用户当前正在使用该系统,这可能会成为一个问题。我真的不想在更新网站时出现任何停机时间。

完整错误如下:

msdeploy 错误 ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER:Web 部署任务失败。 (无法对指定目录(“D:\home\site\ wwwroot in\Domain.DbFactory.dll”)执行操作(“创建文件”)。如果服务器管理员未授权此操作,则可能会发生这种情况您正在使用的用户凭据。了解更多信息,请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER。)

我将如何授权这些权限?

我还在 Azure 上重置了我的发布配置文件,并下载了新的配置文件以再次尝试。但没有运气。

azure azure-web-app-service azure-deployment
9个回答
33
投票

这个错误有点欺骗性。这可能与权限无关,而是由正在使用的文件引起的。

它总是与

Gehs.DbFactory.dll
发生,还是有时是其他文件?另外,
Gehs.DbFactory.dll
是常规托管程序集还是本机/混合程序集?

通常,所有程序集都会进行卷影复制,因此它们不会锁定在

bin
文件夹中。如果它是本机的,它最终可能会被加载到位。

请注意,如果是这种情况,这不是 Azure 特有的,您在任何地方部署时都可能会遇到相同的问题。例如尝试在本地运行时从您的

bin
文件夹中删除此文件。

无论如何,如果您想发布更新版本,您需要确保没有文件被锁定。

如果您找不到方法来执行此操作,这里有一种技术可以让您在不停机的情况下进行发布:

  • 使用 Kudu Console,转到您的
    d:\home\site\wwwroot\bin
    文件夹
  • 重命名有问题的 DLL,例如到
    Gehs.DbFactory.dll.old
    (即使无法删除,重命名通常也可以工作)
  • 进行出版工作

31
投票

对我来说,解决方法是将“删除目标位置的附加文件”设置设置为“true”。 我使用 .NET 6,最近刚刚从 .NET Core 3.1 迁移到 .NET 6


3
投票


2
投票
(Unable to perform the operation ("Delete Directory") for the specified directory ("2_0_50727")

,该部署本来工作正常,但突然崩溃了。


如果您不注意,“2_0_50727”看起来只是一个随机数。

原来是文件夹

aspnet_client\system_web\2_0_50727

,根本不包含任何文件。


根据此文件夹的时间戳 - 以及它在我所有具有此时间戳的 Web 应用程序中的事实 - 它一定是由

Add / Remove Features

在我对 IIS 安装的功能进行一些更改时创建的。因此,无论运行的权限是什么,该文件夹的创建权限都是如此。


删除后我就可以再次部署。


2
投票

在杀死它之前,通过从文件句柄中搜索来搜索正在使用该文件的进程


0
投票


0
投票
D:\home\site\wwwroot\newrelic\Extensions\JetBrains.Annotations.dll

即使停止网络应用程序后,我也无法从 Kudu 的 Powershell 中删除它。

我必须使用

-enableRule:DoNotDeleteRule

更新部署管道:


    


0
投票


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.