我在Visual Studio中使用右键单击发布直接发布到Azure中的临时插槽。我添加了将WebJob添加到我的应用程序的Application Insights。
我启用了Remove additional files at destination
和Precompile during Publishing
。
但是当一个Web作业正在运行且我的暂存站点没有“停止”时,因为它仍然在预热 - 我收到以下错误:
Web部署任务失败。 ((18-Jan-18 22:47:23)发生错误 在远程计算机上处理请求时。)
(18-Jan-18 22:47:23)处理请求时发生错误 在远程计算机上。处理时遇到错误 操作'删除目录' 'd:\家\网站\ wwwroot的\ App_Data文件\ \工作不断'。错误代码是 0x80070091。该目录不为空。
在 Microsoft.Web.Deployment.NativeMethods.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode,String maybeFullPath)at Microsoft.Web.Deployment.DirectoryEx.Delete(String path)at Microsoft.Web.Deployment.DirPathProviderBase.Delete(布尔 whatIf)ProjectX.Web 7 0
我可以通过手动停止暂存插槽,上传它,然后再次启动来解决此问题。但这非常麻烦。
有修复吗?
我在某处读过你可以在发布期间自动使(暂存)应用离线,但我找不到设置。
更新1
<PropertyGroup>
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>
......不适合我。
更新2
在Staging插槽中添加WEBJOBS_STOPPED设置对我不起作用。
答案 0 :(得分:4)
由于您已在Azure应用服务上启用了Application Insights,因此它已在内部安装了一个扩展,该扩展启动了连续的Web作业,并将与Web作业相对应的内容复制到App_Data文件夹。实际问题是因为扩展数据被复制到App_Data文件夹,其中只有用户的数据而不是基础设施数据。
现在,当您选择&#34;从目的地删除附加文件&#34;在visual studio中,它尝试从App_Data文件夹中删除包括Application Insights数据在内的所有内容。由于Application Insights Web作业已在后台运行,因此锁定了相应的dll文件。
即使你选择&#34; App Offline&#34;或者&#34;停止网络工作&#34;并且能够成功删除所有内容,然后您的部署将成功,但这样您的Application Insights将被破坏,因此您可能必须再次配置Application Insights。
<强>建议:强>
选择跳过&#34; App_Data&#34;文件夹以及选项&#34;从目的地删除附加文件&#34;。
它将删除除App_Data文件夹内容之外的所有内容,因此将跳过与Application Insights连续Web作业相对应的dll文件。
参考: VSTS - Azure App Service Task Documentation
<强> 限制 强>
虽然此解决方案有一个限制 - 如果要删除/修改现有的用户定义的Web作业,则无法跳过App_Data文件夹。在这种情况下,要么必须执行两步部署,要么必须再次重新安装应用程序洞察扩展。
答案 1 :(得分:0)
我在另一个SO问题中发现了这个问题:
<PropertyGroup>
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
...
</PropertyGroup>
...添加到您的发布配置文件(.pubxml)。
完整的答案在这里:https://stackoverflow.com/a/20888597/647845
<强>更新强>
这对我不起作用。也许是为了别人。似乎忽略了设置。