用于辅助角色云服务的Windows Azure控制台

时间:2013-03-25 04:31:47

标签: wcf azure azure-worker-roles

我最近在本地计算机上开发了一个工作角色云服务。该服务公开一个WCF接口,该接口将文件作为字节数组接收,重新编译该文件,将其转换为适当的格式,然后将其存储在Azure存储中。我设法在我的机器上使用Azure计算模拟器完成所有工作并将服务发布到Azure并且......没有。再次在我的机器上运行它,它按预期工作。当我在计算机上进行操作时,Azure Compute Emulator的控制台输出对于运行应用程序至关重要。

是否可以通过RDP在Cloud Service上使用类似的功能?如在命令提示符或电源shell中启动/重新启动角色?如果没有,调试/记录工作者角色正在做什么(不使用Intellitrace)的最佳方法是什么?我在项目中启用了诊断程序,但它似乎没有给我与计算机模拟器控制台相同的详细程度。我在localhost上再次重新运行角色和相应的.NET应用程序,但无法在控制台中找到任何可能的错误。

编辑:下一个最好的事情

回到手动记录,我实现了一个将文本文件提供给我的Azure存储帐户的类。这是代码:

public class EventLogger
{
    public static void Log(string message)
    {
        CloudBlobContainer cbc;
        cbc = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageClientAccount"))
                   .CreateCloudBlobClient()
                   .GetContainerReference("errors");
        cbc.CreateIfNotExist();
        cbc.GetBlobReference(string.Format("event-{0}-{1}.txt", RoleEnvironment.CurrentRoleInstance.Id, DateTime.UtcNow.Ticks)).UploadText(message);
    }

}

调用ErrorLogger.Log()将创建一个新的文本文件并记录您放入的任何消息。我在下面的答案中找到了一个例子。

1 个答案:

答案 0 :(得分:2)

我知道没有工作人员角色的控制台。如果诊断程序没有给你任何帮助,那么你需要得到一点hacky。尝试自己跟踪消息和错误以获取blob存储。史蒂夫马克思在这里有一个很好的例子http://blog.smarx.com/posts/printf-here-in-the-cloud

正如他在文章中指出的那样,这不是为了生产,只是为了帮助你找到问题。