2012-04-09 76 views
0

我有一个web服务作为web角色在azure上托管。 在这个Web角色中,我重写了Run()方法并按照以下顺序执行一些数据库操作,以充当工作者角色。什么可能导致我的WebRole永远不会启动?

  1. 去blob存储拉一小组数据。

  2. 缓存该数据以供将来使用。

  3. 杀死一些太旧的斑点。

  4. Thread.Sleep(900000); 
    

基本上操作在后台每15分钟重复。 当我在DevFabric上运行时运行正常,但部署时,天蓝色的门户卡在稳定角色的循环中,然后准备节点。

切勿实际启动任一实例。 我启用了诊断功能,但没有向我显示任何提示有问题的信息。 我不知道为什么会发生这种情况。

回答

0

当别人尽力帮助我时,我通常不喜欢回答自己的问题,但我觉得我用来解决此问题的方法应该记录在案。

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

智能感知对于解决我的部署问题至关重要。我会把它推荐给任何人看到部署devfabric和部署到azure之间的不一致。

1

声音像一个错误正在OnStart中被抛出。你是否有任何方法可以对整个函数进行try/catch,并将错误转储到EventViewer中?从那里您将能够远程访问实例并调查错误

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

1

我建议将此代码移至Run()。在OnStart()中,您的角色实例对于负载平衡器尚不可见,并且由于您向OnStart()中引入了很长时间(可以无限延迟),这很可能就是为什么您会看到关于试图稳定角色的消息(有关这些消息的更多信息,请参见here。)

+0

我在Run()中运行此代码。 OnStart()是一个错字。我很抱歉。 – BentOnCoding 2012-04-09 04:04:13

相关问题