我可以在 Azure 云服务 Web 角色的 OnStart() 方法中 运行 long 运行ning task(synchronous) 吗?

Can I run long running task(synchronous) in OnStart() method in azure cloud service web role?

在网络角色开始接受请求之前需要完成一些初始化工作(大约需要 <= 10 分钟)。所以我的问题是 "Are there any constraints in OnStart() method"? Web 角色会在中间重新启动吗?

Are there any constraints in OnStart() method?

OnStart()方法似乎没有任何限制。如果 OnStart 方法 returns false,则立即停止角色实例。如果方法 returns true,Windows Azure 通过调用 运行 方法启动角色。通常,您应该避免从 OnStart 方法返回 false。

Will the web role restart in between?

如果其中一种生命周期方法发生异常,Azure 将引发 UnhandledException 事件,然后进程终止。在您的角色脱机后,它将由 Azure 重新启动。所以你应该在方法中避免UnhandledException。

更多的细节,你可以参考文章。

  1. Customize the Lifecycle of a Web or Worker role in .NET
  2. Role throws unhandled exceptions while initializing or stopping