Visual studio 2013 Windows Azure队列-CloudQueue.GetMessage()不适用于最新版本的Microsoft.WindowsAzure.Storage(v5.0.0)

Visual studio 2013 Windows Azure队列-CloudQueue.GetMessage()不适用于最新版本的Microsoft.WindowsAzure.Storage(v5.0.0),visual-studio-2013,azure-storage,azure-queues,Visual Studio 2013,Azure Storage,Azure Queues,我是Azure新手,正在尝试教程 本教程介绍如何利用Web角色将任务委派给工作者角色,在Azure上创建云服务。唯一重要的部分;当用户将图像上载到Web角色时,Web角色会将图像放入Azure存储中,并在数据库中创建一个新记录,其中包含存储图像的URL字段。Web角色接下来在Azure队列中放置一条消息(新添加记录的ID) var queueMessage = new CloudQueueMessage(id); await _cloudQueue.AddMessageAsync(queueMe

我是Azure新手,正在尝试教程

本教程介绍如何利用Web角色将任务委派给工作者角色,在Azure上创建云服务。唯一重要的部分;当用户将图像上载到Web角色时,Web角色会将图像放入Azure存储中,并在数据库中创建一个新记录,其中包含存储图像的URL字段。Web角色接下来在Azure队列中放置一条消息(新添加记录的ID)

var queueMessage = new CloudQueueMessage(id);
await _cloudQueue.AddMessageAsync(queueMessage);
然后,工作者角色将从队列中检索消息。接下来,从数据库中检索记录。然后从检索到的数据库记录的图像url创建缩略图

while (true) {
    var msg = _cloudQueue.GetMessage();
    if (msg != null) {
        CreateThumbnail();
    }

    System.Threading.Thread.Sleep(1000);
}

本教程为以下内容提供指导:

  • 下载解决方案源文件并从Visual Studio打开
  • 或者使用Visual Studio从头开始创建解决方案
  • 使用下载的源文件时,该解决方案工作正常。在工作者角色中,
    var msg=_cloudQueue.GetMessage()

    msg
    总是有一些东西(不是空的),尽管上传图像后会有3到4秒的延迟。因此,
    create缩略图()
    总是在上传图像后3到4秒执行

    但是,如果我从头开始创建解决方案,
    msg
    始终为空,无论我等待多长时间,
    create缩略图
    从未执行过。我通过在各处放置断点来确保Worker角色确实在运行

    问题的根源 经过几个小时的艰苦工作,我将问题归结为程序集
    Microsoft.WindowsAzure.Storage

    从教程页面下载的解决方案源文件使用的是3.2.0版,而从头创建的解决方案使用的是NuGet的最新版本5.0.0。因此,换句话说,
    msg
    如果在工作者角色上使用最新版本的
    Microsoft.WindowsAzure.Storage
    ,则始终为空。这是一个已知的问题还是我遗漏了什么。

    很抱歉,您很难让本教程正常运行。我已经和教程的所有者核实过了,最近更新过(大约9/1)。请下载Visual Studio解决方案的新版本,然后重试

    有几件事需要记住,在本教程的一节中有概述:

    • 将启动项目更改为ContosoAdsCloudService
    • 以管理员身份运行Visual Studio,并指定解决方案应使用完整的compute emulator而不是express emulator运行
    在本教程中:

    默认情况下,新的云服务项目使用Azure compute emulator express来模拟Azure环境。这是完整计算仿真器的轻量级版本,在某些情况下,当express版本不能工作时,完整仿真器可以工作

    要将项目更改为使用完整模拟器,请右键单击ContosAdsCloudService项目,然后单击属性。在“属性”窗口中,单击“Web”选项卡,然后单击“使用完整仿真器”单选按钮

    为了使用完整的仿真器运行应用程序,您必须以管理员权限打开Visual Studio