Azure 中的辅助角色工作?

Posted

技术标签:

【中文标题】Azure 中的辅助角色工作?【英文标题】:Worker Role in Azure working? 【发布时间】:2012-05-22 23:57:28 【问题描述】:

我有一个通过工作角色发送自动邮件的应用程序。 当我在 Visual Studio 中调试我的应用程序时,我在 WorkerRole.cs 中设置的 OnStart() 任务完美运行,我每 5 分钟收到一封邮件(出于测试目的)。 我在 WorkerRole.cs 中的代码:

   public override bool OnStart()

    
        ScheduledTaskTimer.Elapsed += new ElapsedEventHandler(ScheduledTaskTimer_Elapsed);
        // ScheduledTaskTimer.Interval = 86400000;
        ScheduledTaskTimer.Interval = 180000;

        ScheduledTaskTimer.Enabled = true;
        return base.OnStart(); 

但是当我部署到 Windows Azure 时,我的辅助角色似乎不起作用。 我从来没有收到任何邮件..我不知道如何检查工人角色是否真的在运行..

【问题讨论】:

几乎可以肯定,您的工作角色正在运行,但您用来发送邮件的代码却没有。你是如何发送邮件的?你用的是什么邮件服务器?它可以到达吗? 我正在使用 gmail.. 它似乎可以正常工作 【参考方案1】:

您可以使用 Microsoft 提供的 silverlight 界面查看您的辅助角色的状态:http://windows.azure.com

如果您看到您的 WorkerRole 从未处于“就绪”状态,这通常意味着您的 WorkerRole 无法启动。这意味着 OnStart() 方法中可能会引发异常。

如果你想了解发生了什么,你可以:

    configure event logs recording configure Remote Desktop Protocol to access the server 对 OnStart 方法中的所有代码进行 try catch 并将异常记录在数据库中。您可以使用ELMAH 轻松做到这一点

【讨论】:

我的工作角色处于“就绪”状态..所以可能我的代码在某个地方没有工作,但只有当它部署到 Windows azure 时,在 Visual Studio 中它确实发送邮件 最好的找出方法是使用 ELMAH【参考方案2】:

请在下面的问题中研究我的 cmets:

Webrole is not starting and always busy

对于工作人员角色,如果您没有运行 Web 服务器,则无需执行上述步骤 2),您仍然可以通过所有其他步骤来解决此问题。

【讨论】:

是的,我相信是这样。由于某些问题,角色内的代码无法运行。当您 RDP 到您的实例并检查任务是否实际已安排时。您还可以运行一些进程监控工具来查看您的服务如何安排发送电子邮件..

以上是关于Azure 中的辅助角色工作?的主要内容,如果未能解决你的问题,请参考以下文章

分析 Azure 辅助角色

从 Azure 中的辅助角色部署 Web 角色

Azure Fabric 服务中的不同辅助角色是不是共享对象?

C# 不提供 Windows 性能计数器(在 Azure 辅助角色上)

Azure 服务总线广播到所有辅助角色实例

Azure 自动缩放在本地工作,但在部署时不工作