我已经从v11搬到了Azure图书馆的v12。当我使用以下代码插入消息时:
private static void insertQueueMessage(string messageToInsert, string queueName)
{
CloudStorageAccount storageAccount;
storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); //points to the azure storage account
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue for our new files to be imported to LOB
CloudQueue incomingCustomerQueue = queueClient.GetQueueReference(queueName);
CloudQueueMessage newQueueMessage = new CloudQueueMessage(messageToInsert);
incomingCustomerQueue.AddMessage(newQueueMessage);
},将其作为基64编码消息插入。
当我尝试使用普通控制台应用程序(也使用12.x库)检索它时,代码如下:
QueueClient queue = new QueueClient(connectionString, queueName);
// process each of the messages
foreach (QueueMessage jsonMessage in queue.ReceiveMessages(maxMessages: 10).Value)
{
//decode message
Console.WriteLine($"Message: {jsonMessage.Body}");
incomingMessageInfo messageData = JsonConvert.DeserializeObject<incomingMessageInfo>(jsonMessage.Body.ToString());由于正在编码的消息,它将失败。如果我手动使用Azure Explorer将编码更改为UTF-8,它就能工作。
我发现了一些引用,用于“在注入服务时指定MessageEncoding”--我不知道如何做到这一点。
这是一个针对C# 4.8的普通.NET控制台应用程序。
从答案中更新-尝试应用队列选项的新实例:
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
QueueClientOptions newOptions = new QueueClientOptions();
newOptions.MessageEncoding = QueueMessageEncoding.None;
// Retrieve a reference to a queue for our new files to be imported to LOB
CloudQueue incomingCustomerQueue = queueClient.GetQueueReference(queueName);
CloudQueueMessage newQueueMessage = new CloudQueueMessage(messageToInsert);
incomingCustomerQueue.AddMessage(newQueueMessage);修正它的“最后守则”:
QueueClientOptions newOptions = new QueueClientOptions();
newOptions.MessageEncoding = QueueMessageEncoding.None;
QueueClient qcl = new QueueClient(conString, queueName, newOptions);
var response = qcl.SendMessage(messageToInsert);发布于 2022-02-01 14:27:41
您要寻找的属性是MessageEncoding属性,它在QueueClientOptions类中可用。
您需要创建QueueClientOptions的一个新实例,并将其MessageEncoding属性设置为QueueMessageEncoding.None。然后,在创建QueueServiceClient实例时需要使用此选项。
https://stackoverflow.com/questions/70940759
复制相似问题