0

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

是否有类似的功能可以通过 RDP 在云服务上使用?例如在命令提示符下或在 power 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() 将创建一个新的文本文件并记录您在其中输入的任何消息。我在下面的答案中找到了一个例子。

4

1 回答 1

2

我知道没有用于工作人员角色的控制台。如果诊断没有给您任何帮助,那么您需要变得有点笨拙。尝试自己追踪消息和错误以进行 Blob 存储。史蒂夫马克思在这里有一个很好的例子http://blog.smarx.com/posts/printf-here-in-the-cloud

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

于 2013-03-25T17:41:00.303 回答