我使用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上重置了我的发布配置文件,并下载了一个新的配置文件以再次尝试它.但没有运气.
错误有点欺骗.这可能与权限无关,而是由正在使用的文件引起.
它总是会发生Gehs.DbFactory.dll
,或者有时是其他文件?此外,是Gehs.DbFactory.dll
常规托管程序集,还是本机/混合程序集?
通常,所有程序集都会复制阴影,因此它们不会锁定在该bin
文件夹中.如果它是原生的,它最终可能会被加载到位.
请注意,如果是这种情况,那么它不是特定于Azure的,并且您可能在任何地方部署相同的问题.例如,尝试bin
在本地运行时从文件夹中删除此文件.
无论如何,如果要发布更新版本,您需要确保没有文件被锁定到位.
如果您找不到这样做的方法,这里有一种技术可以让您在没有任何停机的情况下发布:
使用Kudu控制台,转到您的d:\home\site\wwwroot\bin
文件夹
重命名有问题的DLL,例如Gehs.DbFactory.dll.old
(即使你不能删除它也能正常重命名)
做你的出版