我已经使用 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 上重置了我的发布配置文件,并下载了新的配置文件以再次尝试。但没有运气。
这个错误有点欺骗性。这可能与权限无关,而是由正在使用的文件引起的。
它总是与
Gehs.DbFactory.dll
发生,还是有时是其他文件?另外,Gehs.DbFactory.dll
是常规托管程序集还是本机/混合程序集?
通常,所有程序集都会进行卷影复制,因此它们不会锁定在
bin
文件夹中。如果它是本机的,它最终可能会被加载到位。
请注意,如果是这种情况,这不是 Azure 特有的,您在任何地方部署时都可能会遇到相同的问题。例如尝试在本地运行时从您的
bin
文件夹中删除此文件。
无论如何,如果您想发布更新版本,您需要确保没有文件被锁定。
如果您找不到方法来执行此操作,这里有一种技术可以让您在不停机的情况下进行发布:
d:\home\site\wwwroot\bin
文件夹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\2_0_50727
,根本不包含任何文件。
根据此文件夹的时间戳 - 以及它在我所有具有此时间戳的 Web 应用程序中的事实 - 它一定是由
Add / Remove Features
在我对 IIS 安装的功能进行一些更改时创建的。因此,无论运行的权限是什么,该文件夹的创建权限都是如此。
删除后我就可以再次部署。
在杀死它之前,通过从文件句柄中搜索来搜索正在使用该文件的进程