Я унаследовал приложение C++ (из которого Im no expert, Im an .NET guy), который отправляет сообщения в лазурную очередь в форме JSON. Это прекрасно работает, когда я пытаюсь выбрать сообщение из очереди в своем консольном приложении .NET, которое дает мне следующее сообщение:C++ Azure Storage Queue отправляет неверный тип строки
«Вход не является допустимой строкой Base-64, так как содержит не- -база 64 символа, более двух дополняющих символов или небелого пробела среди пробельных символов ".
код C++ выглядит следующим образом (обратите внимание на закомментирована фиктивного сообщение, которое дает пример того, как он выглядит)
void send(utility::string_t msg) {
// Define the connection-string with your values.
const utility::string_t storage_connection_string(U("DefaultEndpointsProtocol=https;AccountName=bogus;AccountKey=YcG8FP9HdaB+r5jDTruTzZy8dXku+fLr4hvPcq+C6Uzhh7UOB6C7MemYluQMz28JlzwZIcn6Vw=="));
// Retrieve storage account from connection string.
azure::storage::cloud_storage_account storage_account = azure::storage::cloud_storage_account::parse(storage_connection_string);
// Create a queue client.
azure::storage::cloud_queue_client queue_client = storage_account.create_cloud_queue_client();
// Retrieve a reference to a queue.
azure::storage::cloud_queue queue = queue_client.get_queue_reference(U("beam-queue"));
// Create the queue if it doesn't already exist.
queue.create_if_not_exists();
// Create a message and add it to the queue.
//Dummy message
//azure::storage::cloud_queue_message message(U("[{\"url\":\"https://www.google.com.au\",\"app\":null,\"email\":\"[email protected]\",\"dbId\":\"323e3098-cc87-4b37-8eb5-85a6d6ddba1c\",\"seconds\":147.0490574,\"date\":\"2016-11-17T00:00:00+11:00\"}]"));
azure::storage::cloud_queue_message message(msg);
queue.add_message(message);
lastsendtime = GetTickCount();
}
Я могу даже увидеть сообщение в проводнике хранения:
Но это, кажется, не в том формате, когда я выбрать сообщение из очереди:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GetConnectionString());
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueueClient clnt = storageAccount.CreateCloudQueueClient();
CloudQueue queue = clnt.GetQueueReference("bogus");
queue.EncodeMessage = true;
List<Service> userServices = null;
CloudQueueMessage retrievedMessage = queue.GetMessage();
List<CloudAppItem> items = JsonConvert.DeserializeObject<List<CloudAppItem>>(queue.GetMessage().AsString);
Он не работает в последней строке. И это не из-за сериализатора. Queue.GetMessage(). AsString возвращает ошибку.
UPDATE (До сих пор не работает)
Я вынул заявление encodedmessage, как я имел предыдущий пытался добавить его в, чтобы сделать его работу. Он все еще не работает. Я также показать необработанную строку, не доступен из-за того, что это частный метод в классе:
Кажется работать. Спасибо. Я не знаю, почему я этого не сделал! – user1112324