尝试使用 web api 从 Azure 队列检索消息文本,但消息文本已编码。我如何删除编码
Trying to retrieve Message Text from Azure Queue using web api but message text is encoded. how do i remove encoding
当我检索某些内容时,输出已编码。
QueueClient queue = new QueueClient(connectionString, "outqueue");
字符串值 = await RetrieveNextMessageAsync(queue);
return value;
检索 NextMessageAsync:
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
如果你的消息编码是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
当我检索某些内容时,输出已编码。
QueueClient queue = new QueueClient(connectionString, "outqueue"); 字符串值 = await RetrieveNextMessageAsync(queue);
return value;
检索 NextMessageAsync:
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
如果你的消息编码是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