首页 > 解决方案 > 我可以在 Azure 云服务 Web 角色的 OnStart() 方法中运行长时间运行的任务(同步)吗?

问题描述

在 Web 角色开始接受请求之前,需要完成一些初始化工作(大约需要 <= 10 分钟)。所以我的问题是“OnStart() 方法中是否有任何限制”?Web 角色会在两者之间重新启动吗?

标签: azure-web-rolesazure-cloud-services

解决方案


OnStart() 方法中是否有任何限制?

OnStart()方法似乎没有任何约束。如果 OnStart 方法返回false,角色实例会立即停止。如果该方法返回true,Windows Azure 通过调用 Run 方法来启动角色。通常,您应该避免从 OnStart 方法返回 false。

Web 角色会在两者之间重新启动吗?

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

更详细的可以参考文章。

  1. 在 .NET 中自定义 Web 或 Worker 角色的生命周期
  2. 角色在初始化或停止时抛出未处理的异常

推荐阅读