c# - Azure 队列:无法读取云队列消息。AsString 和 AsBytes 属性正在抛出 System.ArgumentException
问题描述
好的,我有一个旨在管理 Azure 云队列消息的类,插入工作正常:
public async void Insert(string message)
{
await Queue.AddMessageAsync(new CloudQueueMessage(message));
}
请注意,这Queue
是一个CloudQueue
实例。
这是使用上述方法插入到存储中的消息
但是,在尝试获取或查看消息时,发生了一种奇怪的行为,我无法阅读任何内容:
消息的内容正在引发异常并以 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 ) 中使用队列的方式记录在此处。
解决方案
我相信它与错误的(旧版)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/
推荐阅读
- python - 如何对 Python 继承进行代码分析?
- php - 如何在 Laravel 中使用两个 foreignId
- python - colab中chromedriver.exe的无权限
- html - 如何使用 bootstrap 4 创建带有响应式图像的两行
- angular - Reactive @Input 没有以角度正确获取数据
- c - 使用 sscanf 从文件读取时如何检测空值(并替换它们)
- javascript - Javascript语义UI:表单验证:列表项字符未呈现
- sql - 更新或删除嵌套 jsonb 对象中的值
- git - 解决合并冲突 GIT Azure-devops 服务器端
- angular - node_modules/@angular/material/index.d.ts' 不是模块