我使用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 \ bin \ Domain.DbFactory.dll")。这可能发生如果服务器管理员未对您正在使用的用户凭据授权此操作。请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER了解详情。)
我如何授权这些权限?
我还在Azure上重置了我的发布配置文件,并下载了新的配置文件以再次尝试。但是没有运气。
答案 0 :(得分:21)
错误有点欺骗。这可能与权限无关,而是由正在使用的文件引起的。
它是否始终与Gehs.DbFactory.dll
一起发生,或者有时是其他文件?此外,Gehs.DbFactory.dll
是常规托管程序集,还是本机/混合程序集?
通常,所有程序集都会复制阴影,因此它们不会锁定在bin
文件夹中。如果它是原生的,它最终可能会被加载到位。
请注意,如果是这种情况,则不是特定于Azure的,并且您可能在任何地方部署相同的问题。例如尝试在本地运行时从bin
文件夹中删除此文件。
如果您想要发布更新版本,您需要确保没有文件被锁定到位。
如果您无法找到实现此目的的方法,这里有一种技术可以让您在没有停机的情况下发布:
d:\home\site\wwwroot\bin
文件夹Gehs.DbFactory.dll.old
(即使您无法删除,也会正常重命名)答案 1 :(得分:2)
当我在项目中的Content下添加一个新文件夹然后尝试发布时,发生了同样的事情。我刚刚在Azure上重新启动了应用程序,然后它运行正常。
答案 2 :(得分:1)
我在部署工作正常且突然中断的情况下收到了错误(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应用程序中的事实 - 当我对IIS安装的功能进行一些更改时,它必须由Add / Remove Features
创建。因此,无论运行的权限是什么,该文件夹被创建为。
一旦我删除它,我就能再次部署。
答案 3 :(得分:1)
当我通过停止实例从Octopus部署到Azure Web应用程序时,这也发生在我身上。但是w3wp scm进程仍在使用该文件。所以我不得不通过进入Process Explorer来杀死它。
在杀死它之前,通过从文件句柄搜索来搜索正在使用文件的进程
答案 4 :(得分:0)
当我通过FTP弄乱App Service文件时发生。我可能删除了一些重要的内容。刷新和重新启动App Service有所帮助。