Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动更新启动任务在azure应用程序中有效吗?_Azure_Startup_Auto Update - Fatal编程技术网

自动更新启动任务在azure应用程序中有效吗?

自动更新启动任务在azure应用程序中有效吗?,azure,startup,auto-update,Azure,Startup,Auto Update,我已经为Azure应用程序构建了一个包含exe文件的启动任务(定期运行,有一定的时间间隔),现在我想让它像我之前要求的那样每周自动更新 然而,我会做一些逻辑,通过那个exe(启动任务)替换那个文件,然后它也不会对新文件产生任何影响。我的结论是,只有我们用新文件升级/创建azure项目,新的启动任务才会生效。(如果我理解错了,请纠正我) 那么,有没有办法通过重新启动实例(通过exe/startuptask)来完成我的逻辑工作呢? 我想它也会使用原始文件(在升级/创建应用程序时添加到startupt

我已经为Azure应用程序构建了一个包含exe文件的启动任务(定期运行,有一定的时间间隔),现在我想让它像我之前要求的那样每周自动更新

然而,我会做一些逻辑,通过那个exe(启动任务)替换那个文件,然后它也不会对新文件产生任何影响。我的结论是,只有我们用新文件升级/创建azure项目,新的启动任务才会生效。(如果我理解错了,请纠正我)

那么,有没有办法通过重新启动实例(通过exe/startuptask)来完成我的逻辑工作呢? 我想它也会使用原始文件(在升级/创建应用程序时添加到startuptask中)而不是新文件


无论如何都有可能吗?

这是一个非常不可靠的解决方案。如果Azure实例崩溃或被关闭进行更新,您将从原始服务包启动一个新实例。已修改实例的所有状态都将丢失

更可靠的方法是将易失性可执行文件存储在Azure Blob存储之类的地方。您将一个新版本上载到blob存储中,角色会以某种方式看到(通过轮询存储或通过某些用户调用的操作-无所谓)下载新版本并用新版本替换现有版本


这样,如果您的角色崩溃,它将在启动时从持久性存储可靠地获取最新版本。

这是一个非常不可靠的解决方案。如果Azure实例崩溃或被关闭进行更新,您将从原始服务包启动一个新实例。已修改实例的所有状态都将丢失

更可靠的方法是将易失性可执行文件存储在Azure Blob存储之类的地方。您将一个新版本上载到blob存储中,角色会以某种方式看到(通过轮询存储或通过某些用户调用的操作-无所谓)下载新版本并用新版本替换现有版本


这样,如果您的角色崩溃,它将在启动时可靠地从持久性存储中获取最新版本。

在我研究了您的问题之后,我可以提出一个非常简单的解决方案,如下所示,我以前为Tomcat/Java示例做过:

准备EXE以与原始代码一起重新启动VM

  • 在您的EXE中,创建一个方法,以在特定的时间间隔在Azure存储上查找特定的XML文件,并添加重试逻辑以访问XML
  • 解析特定值的XML,如果设置了特定值,请重新启动计算机
  • 将您的EXE打包为ZIP格式并放置在Azure存储中
  • 确保将XML放在云上,并设置reboot=false值
  • 启动任务中的操作:

  • 创建一个启动任务并从Azure存储中下载包含您的EXE的ZIP
  • 下载后,解压缩文件并将EXE放入特定文件夹
  • 启动EXE
  • 要更新EXE时要做什么:

  • 更新您的EXE,将其打包到ZIP中,并以相同的名称放置在Azure存储的相同位置
  • 更新XML以启用重新启动
  • 更新将如何进行:

  • EXE将在设计的某些内部文件之后查找XML
  • 一旦看到设置了Reboot,它将重新启动VM
  • 重新启动后,启动任务将启动,新的EXE将下载到Azure VM并更新。确保下载和更新在同一文件夹中完成
  • 看看下面示例中使用类似方法的Startup tak:

    在研究了您的问题之后,我可以提出一个非常简单的解决方案,如下所示,这是我之前针对Tomcat/Java示例所做的:

    准备EXE以与原始代码一起重新启动VM

  • 在您的EXE中,创建一个方法,以在特定的时间间隔在Azure存储上查找特定的XML文件,并添加重试逻辑以访问XML
  • 解析特定值的XML,如果设置了特定值,请重新启动计算机
  • 将您的EXE打包为ZIP格式并放置在Azure存储中
  • 确保将XML放在云上,并设置reboot=false值
  • 启动任务中的操作:

  • 创建一个启动任务并从Azure存储中下载包含您的EXE的ZIP
  • 下载后,解压缩文件并将EXE放入特定文件夹
  • 启动EXE
  • 要更新EXE时要做什么:

  • 更新您的EXE,将其打包到ZIP中,并以相同的名称放置在Azure存储的相同位置
  • 更新XML以启用重新启动
  • 更新将如何进行:

  • EXE将在设计的某些内部文件之后查找XML
  • 一旦看到设置了Reboot,它将重新启动VM
  • 重新启动后,启动任务将启动,新的EXE将下载到Azure VM并更新。确保下载和更新在同一文件夹中完成
  • 看看下面示例中使用类似方法的Startup tak:

    无论如何,如果我将用新的exe(在启动任务中)替换博客存储中的exe,它会生效吗?正如我已经用RDP尝试过的,似乎只是替换那个文件并没有起作用。@Arun Rana:您必须在代码中采取一些措施来停止原来的程序,替换它并运行新的程序。无论如何,如果我用新的程序替换博客存储中的exe(在启动任务中),它会起作用吗?正如我已经用RDP尝试过的,似乎仅仅替换那个文件并没有起到效果。@Arun Rana:您必须在代码中采取一些措施来停止原来的程序,替换它并运行新的程序。谢谢您的描述性回答。我也有同样的想法,但我对重启VM beca的第一步有怀疑