首页 > 解决方案 > Azure 队列:无法读取云队列消息。AsString 和 AsBytes 属性正在抛出 System.ArgumentException

问题描述

好的,我有一个旨在管理 Azure 云队列消息的类,插入工作正常:

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

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

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

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

但是,在尝试获取查看消息时,发生了一种奇怪的行为,我无法阅读任何内容:

消息的内容正在引发异常并返回为 null

消息的内容正在引发异常并以 null 形式返回。

这是 messageCount 值

这就是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 ) 中使用队列的方式记录在此处

标签: c#azure.net-coreazure-storageazure-queues

解决方案


我相信它与错误的(旧版)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/


推荐阅读