首页 > 解决方案 > Azure Function App 无法读取带有队列触发器的 Base64 编码消息

问题描述

我有两个应用程序。第一个是用 C++ 编写的服务,它向 Azure 队列生成消息,以及一个用 C# 编写的函数应用,它使用这些消息。我使用 Azure SDK 写入队列

void send_to_queue (const string & message_body, const string & queue_name, const ::azure::storage::cloud_storage_account & storage_account){
    ::azure::storage::cloud_queue_client queue_client =     storage_account_.create_cloud_queue_client();
    ::azure::storage::cloud_queue queue = queue_client.get_queue_reference(queue_name);
         
    ::azure::storage::cloud_queue_message message(message_body);
    queue.add_message(message);
}

现在,函数应用程序默认由 VS Code 的 Azure 插件创建:

public static class MessageConsumer
{

    [FunctionName("MessageConsumer")]
    public static void Run([QueueTrigger("my-queue-name", Connection = "my_STORAGE")] string message, ILogger log)
    {
         // Code here
    }
}

函数应用崩溃并出现以下错误:

 The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

我拒绝相信对我来说唯一的选择是使用 boost 等对 c++ 中的 message_body 进行 base64 编码。这里有解决方法吗?

标签: azureazure-functionsazure-sdk-.netazure-queuesazure-sdk

解决方案


推荐阅读