Azure 函数中绑定队列存储消息文本失败

Posted

技术标签:

【中文标题】Azure 函数中绑定队列存储消息文本失败【英文标题】:Failed Binding Queue Storage Message Text in Azure Function 【发布时间】:2021-10-03 07:06:56 【问题描述】:

我已成功将一些消息发送到 Azure 队列存储。

这是我如何将消息发送到队列存储的代码:

private void QueueEmail(Email email)

    QueueClient client = GetQueueStorage("invoice-email");

    var message = JsonConvert.SerializeObject(email);

    System.Diagnostics.Debug.WriteLine(message);
    client.SendMessageAsync(message).Wait();

当我尝试运行 azure 函数来处理队列时出现错误,执行失败。以下是错误消息。

有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

您遇到此问题的原因是因为 Function 需要一个 base64 编码的字符串,而您传递的是一个简单的字符串。

来自link

编码

函数需要 base64 编码的字符串。任何调整 编码类型(为了将数据准备为 base64 编码字符串) 需要在调用服务中实现。

在发送消息之前,请尝试将其转换为 base64 编码的字符串。比如:

private void QueueEmail(Email email)

    QueueClient client = GetQueueStorage("invoice-email");

    var message = JsonConvert.SerializeObject(email);

    System.Diagnostics.Debug.WriteLine(message);
    client.SendMessageAsync(Convert.ToBase64String(Encoding.UTF8.GetBytes(message))).Wait();

【讨论】:

感谢详细的解决方案!永远不知道简单字符串与 base64 编码字符串不同。

以上是关于Azure 函数中绑定队列存储消息文本失败的主要内容,如果未能解决你的问题,请参考以下文章

Azure 存储队列触发的 Azure 函数

我们可以使用 Azure 存储队列作为事件源吗?

在 Azure 存储中使用队列

Python Azure 函数:blobclient.upload_blob 授权失败

Azure 存储队列中的隐藏消息

Azure函数计时器触发器失败运行存储过程的执行[重复]