0

我有一个作为 Web 角色托管在 azure 上的 Web 服务。在这个 Web 角色中,我重写了 Run() 方法并按以下顺序执行一些数据库操作,以基本上充当工作角色。

  1. 转到 blob 存储以提取一小组数据。

  2. 缓存此数据以备将来使用。

  3. 杀死一些太旧的 blob。

  4. Thread.Sleep(900000);
    

基本上,该操作在后台每 15 分钟重复一次。当我在 DevFabric 上运行时它运行良好,但是在部署 azure 门户时会陷入稳定角色然后准备节点的循环中。

从来没有真正启动任何一个实例。我启用了诊断,但它没有显示任何提示存在问题的信息。我不知道为什么会发生这种情况。

4

3 回答 3

1

听起来像是在 OnStart 中引发了错误。您是否有任何方法可以尝试/捕获整个函数并将错误转储到 EventViewer 中?从那里您将能够远程进入实例并调查错误

您部署到云的配置很可能与在模拟器中运行的配置不同(SQL Azure 防火墙权限、指向本地开发存储而不是 ATS 的指针等)。此外,请确保您的诊断程序指向真实的 Azure 帐户,而不是本地开发存储。

于 2012-04-09T01:16:10.747 回答
1

我建议将此代码移至Run(). 在OnStart()中,您的角色实例对负载均衡器尚不可见,并且由于您在 中引入了很长(好的,无限延迟)OnStart(),这可能就是您看到有关角色试图稳定的消息的原因(更多有关这些消息的信息在这里。)

于 2012-04-09T03:19:35.270 回答
0

当其他人努力帮助我时,我通常不喜欢回答我自己的问题,但是我觉得应该记录我用来解决这个问题的方法。

我在部署到 Azure 时启用了 Intellitrace,我能够看到所有抛出的异常并调查异常的原因。

Intellisense 对解决我的部署问题至关重要。我会向任何看到部署 devfabric 和部署到 azure 之间不一致的人推荐它。

于 2012-04-13T21:31:42.137 回答