我最近在本地计算机上开发了一个辅助角色云服务。该服务公开一个 WCF 接口(interface),该接口(interface)接收字节数组形式的文件,重新编译该文件,将其转换为适当的格式,然后将其存储在 Azure 存储中。我设法在我的计算机上使用 Azure 计算模拟器让一切正常运行,并将服务发布到 Azure,但……什么也没有。再次在我的机器上运行它,它按预期工作。当我在计算机上处理该问题时,Azure 计算模拟器的控制台输出对于应用程序的运行至关重要。
是否有可以通过 RDP 在云服务上使用的类似功能?例如在命令提示符或 power shell 中启动/重新启动角色?如果没有,调试/记录辅助角色正在执行的操作的最佳方法是什么(不使用 Intellitrace)?我在项目中启用了诊断,但它似乎没有为我提供与计算机模拟器控制台相同的详细程度。我已在本地主机上再次重新运行该角色和相应的 .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() 将创建一个新的文本文件并记录您放入其中的任何消息。我在下面的答案中找到了一个例子。
最佳答案
据我所知,没有适用于辅助角色的控制台。如果诊断无法给您提供任何帮助,那么您需要采取一些技巧。尝试自行追踪 Blob 存储的消息和错误。史蒂夫马克思在这里有一个很好的例子http://blog.smarx.com/posts/printf-here-in-the-cloud
正如他在文章中指出的那样,这不是为了生产,只是为了帮助您找到问题。
关于wcf - 适用于辅助角色云服务的 Windows Azure 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15607686/