通过 msdeploy 的 Azure Web 应用程序部署错误 - ERROR_INSUFFICIENT_A CCESS_TO_SITE_FOLDER
Azure Web App Deployment error via msdeploy - ERROR_INSUFFICIENT_A CCESS_TO_SITE_FOLDER
我已经使用 msdeploy 部署到我的 Azure Web 应用程序大约 4 个月了,上传网站的一切都很顺利。
直到最近,部署都没有出现错误。我现在在发布网站应用程序时收到 "ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER" 错误。
我成功更新网站的唯一方法是停止 Azure 上的 Web 应用程序,然后通过 Visual Studio 执行 Web 应用程序发布。但如果用户当前正在使用该系统,这可能会成为一个问题。我真的不希望在更新网站时有任何停机时间。
完整错误如下:
msdeploy error ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER: Web deployment task failed. (Unable to perform the operation ("Create File") for the specified directory ("D:\home\site\ wwwroot\bin\Domain.DbFactory.dll"). This can occur if the server administrator has not authorized this operation for the user credentials you are using. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER.)
我将如何授权这些权限?
我还在 Azure 上重置了我的发布配置文件,并下载了一个新的配置文件以再次尝试。但运气不好。
这个错误有点骗人。这可能与权限无关,而是由正在使用的文件引起的。
它总是发生在 Gehs.DbFactory.dll
上,还是有时是其他文件?另外,Gehs.DbFactory.dll
是常规托管程序集,还是 native/mixed 程序集?
通常,所有程序集都会进行影子复制,因此它们不会锁定在 bin
文件夹中。如果它是原生的,它最终可能会被加载到位。
请注意,如果是这种情况,则不是 Azure 特有的,您可能在任何地方部署时都会遇到同样的问题。例如尝试在本地 运行 时从 bin
文件夹中删除此文件。
无论如何,如果您想发布更新版本,您需要确保没有文件被锁定。
如果您找不到执行此操作的方法,这里有一种技术可以让您在没有任何停机时间的情况下发布:
- 使用 Kudu Console,转到您的
d:\home\site\wwwroot\bin
文件夹
- 重命名有问题的 DLL,例如至
Gehs.DbFactory.dll.old
(重命名通常有效,即使您无法删除它)
- 做你的发布
我在一个运行良好但突然崩溃的部署上遇到错误 (Unable to perform the operation ("Delete Directory") for the specified directory ("2_0_50727")
。
如果你没有注意,“2_0_50727”看起来只是一个随机数。
原来是文件夹 aspnet_client\system_web_0_50727
,里面甚至没有任何文件。
根据此文件夹的时间戳 - 以及它在我所有具有此时间戳的 Web 应用程序中的事实 - 它一定是由 Add / Remove Features
在我对 IIS 安装的功能进行一些更改时创建的。因此,无论以什么权限运行,这个文件夹都是以什么权限创建的。
我一删除它就可以再次部署了。
当我在我的项目的内容下添加一个新文件夹然后尝试发布时,同样的事情发生在我身上。我刚刚在 Azure 上重新启动了应用程序,然后它运行良好。
当我通过停止实例从八达通部署到 Azure Web 应用程序时,我也遇到过这种情况。但是 w3wp scm 进程仍在使用该文件。所以我不得不通过 Process Explorer 来杀死它。
在杀死它之前通过从文件句柄搜索来搜索正在使用该文件的进程
当我通过 FTP 弄乱应用服务文件时发生在我身上。我可能删除了一些重要的东西。刷新并重新启动应用服务有帮助。
对我来说,解决办法是将删除目的地的附加文件设置为真。
我正在使用 .NET 6,最近刚从 .NET Core 3.1 迁移到 .NET 6
我的抱怨无法删除 D:\home\site\wwwroot\newrelic\Extensions\JetBrains.Annotations.dll
。
即使停止网络应用程序,我也无法从 Kudu 的 Powershell 中删除它。
我必须使用 -enableRule:DoNotDeleteRule
更新部署管道:
我已经使用 msdeploy 部署到我的 Azure Web 应用程序大约 4 个月了,上传网站的一切都很顺利。 直到最近,部署都没有出现错误。我现在在发布网站应用程序时收到 "ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER" 错误。
我成功更新网站的唯一方法是停止 Azure 上的 Web 应用程序,然后通过 Visual Studio 执行 Web 应用程序发布。但如果用户当前正在使用该系统,这可能会成为一个问题。我真的不希望在更新网站时有任何停机时间。
完整错误如下:
msdeploy error ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER: Web deployment task failed. (Unable to perform the operation ("Create File") for the specified directory ("D:\home\site\ wwwroot\bin\Domain.DbFactory.dll"). This can occur if the server administrator has not authorized this operation for the user credentials you are using. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER.)
我将如何授权这些权限?
我还在 Azure 上重置了我的发布配置文件,并下载了一个新的配置文件以再次尝试。但运气不好。
这个错误有点骗人。这可能与权限无关,而是由正在使用的文件引起的。
它总是发生在 Gehs.DbFactory.dll
上,还是有时是其他文件?另外,Gehs.DbFactory.dll
是常规托管程序集,还是 native/mixed 程序集?
通常,所有程序集都会进行影子复制,因此它们不会锁定在 bin
文件夹中。如果它是原生的,它最终可能会被加载到位。
请注意,如果是这种情况,则不是 Azure 特有的,您可能在任何地方部署时都会遇到同样的问题。例如尝试在本地 运行 时从 bin
文件夹中删除此文件。
无论如何,如果您想发布更新版本,您需要确保没有文件被锁定。
如果您找不到执行此操作的方法,这里有一种技术可以让您在没有任何停机时间的情况下发布:
- 使用 Kudu Console,转到您的
d:\home\site\wwwroot\bin
文件夹 - 重命名有问题的 DLL,例如至
Gehs.DbFactory.dll.old
(重命名通常有效,即使您无法删除它) - 做你的发布
我在一个运行良好但突然崩溃的部署上遇到错误 (Unable to perform the operation ("Delete Directory") for the specified directory ("2_0_50727")
。
如果你没有注意,“2_0_50727”看起来只是一个随机数。
原来是文件夹 aspnet_client\system_web_0_50727
,里面甚至没有任何文件。
根据此文件夹的时间戳 - 以及它在我所有具有此时间戳的 Web 应用程序中的事实 - 它一定是由 Add / Remove Features
在我对 IIS 安装的功能进行一些更改时创建的。因此,无论以什么权限运行,这个文件夹都是以什么权限创建的。
我一删除它就可以再次部署了。
当我在我的项目的内容下添加一个新文件夹然后尝试发布时,同样的事情发生在我身上。我刚刚在 Azure 上重新启动了应用程序,然后它运行良好。
当我通过停止实例从八达通部署到 Azure Web 应用程序时,我也遇到过这种情况。但是 w3wp scm 进程仍在使用该文件。所以我不得不通过 Process Explorer 来杀死它。
在杀死它之前通过从文件句柄搜索来搜索正在使用该文件的进程
当我通过 FTP 弄乱应用服务文件时发生在我身上。我可能删除了一些重要的东西。刷新并重新启动应用服务有帮助。
对我来说,解决办法是将删除目的地的附加文件设置为真。
我正在使用 .NET 6,最近刚从 .NET Core 3.1 迁移到 .NET 6
我的抱怨无法删除 D:\home\site\wwwroot\newrelic\Extensions\JetBrains.Annotations.dll
。
即使停止网络应用程序,我也无法从 Kudu 的 Powershell 中删除它。
我必须使用 -enableRule:DoNotDeleteRule
更新部署管道: