尝试使用 Web api 从 Azure 队列中检索消息文本,但消息文本已编码。我如何删除编码
Posted
技术标签:
【中文标题】尝试使用 Web api 从 Azure 队列中检索消息文本,但消息文本已编码。我如何删除编码【英文标题】:Trying to retrieve Message Text from Azure Queue using web api but message text is encoded. how do i remove encoding 【发布时间】:2021-03-15 08:21:01 【问题描述】:当我检索某些内容时,输出被编码。
QueueClient queue = new QueueClient(connectionString, "outqueue"); 字符串值 = 等待 RetrieveNextMessageAsync(queue);
return value;
RetrieveNextMessageAsync:
if (await theQueue.ExistsAsync())
QueueProperties properties = await theQueue.GetPropertiesAsync();
if (properties.ApproximateMessagesCount > 0)
QueueMessage[] retrievedMessage = await theQueue.ReceiveMessagesAsync(1);
string theMessage = retrievedMessage[0].MessageText;
await theQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
return theMessage;
输出: enter image description here
【问题讨论】:
你能告诉我你是如何定义方法RetrieveNextMessageAsync
的吗?
需要有关 RetrieveNextMessageAsync 的更多信息。看起来怎么样?
据我所知,默认情况下,如果我们使用 V12 SDK 管理 Azure 队列,消息只是 UTF-8 字符串。更多详情请参考github.com/Azure/azure-sdk-for-net/issues/…。您能否检查一下 Microsoft Storage 探索的消息编码?
@Dhatri 你有更新吗?
【参考方案1】:
如果您的消息编码是base64,您可以使用以下代码通过包Azure.Storage.Queues
检索它
[HttpGet("getMessage")]
public async Task<string> GetMessageAsync()
string connectionString = "";
var options = new QueueClientOptions
MessageEncoding= QueueMessageEncoding.Base64
;
var queue = new QueueClient(connectionString, "myqueue", options);
var message = await RetrieveNextMessageAsync(queue);
return message;
static async Task<string> RetrieveNextMessageAsync(QueueClient theQueue)
if (await theQueue.ExistsAsync())
QueueProperties properties = await theQueue.GetPropertiesAsync();
if (properties.ApproximateMessagesCount > 0)
QueueMessage[] retrievedMessage = await theQueue.ReceiveMessagesAsync(1);
string theMessage = retrievedMessage[0].MessageText;
await theQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
return theMessage;
return null;
return null;
关于如何查看消息编码,可以使用Azure Storage Explorer
【讨论】:
如果对你有用,可以accept it as an answer吗?以上是关于尝试使用 Web api 从 Azure 队列中检索消息文本,但消息文本已编码。我如何删除编码的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 ASP.net Web API 中发生授权之前使用 OWIN 注入授权标头
使用 Azure Ad Auth 从 .NET Core Web API 读取/写入 Azure Blob
无法验证从 Azure AD 获得的访问令牌签名以保护 Web API