Azure 队列:无法读取云队列消息。 AsString 和 AsBytes 属性正在抛出 System.ArgumentException

Azure Queue: Unable to read cloud queue messages. AsString and AsBytes properties are throwing System.ArgumentException

好的,我有一个 class 用于管理 Azure 云队列消息, 插入 工作正常:

    public async void Insert(string message)
    {
        await Queue.AddMessageAsync(new CloudQueueMessage(message));
    }

请注意,此 Queue 是一个 CloudQueue 实例。

这是使用上述方法插入到存储中的消息

但是,在尝试 GetPeek 消息时,发生了奇怪的行为,我无法阅读任何内容:

消息内容抛出异常,返回为 null。

这是 messageCount 值。

这是文本,用于检索消息的方法:

    public async Task<List<string>> GetMessages()
    {
        var list = new List<string>();

        await Queue.FetchAttributesAsync();
        int messageCount = Queue.ApproximateMessageCount ?? 0;

        if (messageCount == 0) return list;

        foreach (var msg in await Queue.GetMessagesAsync(messageCount))
        {
            
             list.Add(msg.AsString);
        }

        return list;
    }

编辑: 我按照批准的答案中的指示进行了检查,发现我使用的是已弃用的软件包,该软件包似乎不再有效。 此库已拆分为多个部分并已弃用。

我不得不使用最新的 API 并更改我的代码,它实际上更容易使用,但需要进行一定的返工。现在可以使用了,在这个新版本(.NET v12)中使用队列的方式是documented here.

我认为这与错误的(遗留)Nuget 包有关。我最近遇到了这样的问题,当我升级到以下软件包后问题就解决了:

Install-Package Microsoft.Azure.Storage.Common -Version 11.1.7
Install-Package Microsoft.Azure.Storage.Queue -Version 11.1.7

https://www.nuget.org/packages/Microsoft.Azure.Storage.Queue/

https://www.nuget.org/packages/Microsoft.Azure.Storage.Common/

我也遇到了这个问题。您应该将所有软件包更新到最新版本,它会正常工作。