我最近在本地机器上开发了一个工人角色云服务。该服务公开了一个 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() 将创建一个新的文本文件并记录您在其中输入的任何消息。我在下面的答案中找到了一个例子。