Azure队列存储触发器函数在字节数组上引发System.Text.DecoderFallbackException

时间:2020-09-30 18:34:36

标签: azure function queue storage

我正在将字节数组发送到Azure存储队列-由于队列大小的限制,它被压缩为JSON,编码为base64。 gzip压缩然后编码为base64,它已经远远低于限制。使用简单的示例C#程序(而不是触发器),检索消息可以正常工作:

unknown

但是,当重写与功能应用触发器相同的代码时:

function sat_clock() {
    $format = get_option('date_format') . ' ' . get_option('time_format');
    $hour = the_field('weekday_open', 'options');
    $times = array(
        'mon' => '9:00 AM - 9:00 PM',
        'tue' => '9:00 AM - 9:00 PM',
        'wed' => '9:00 AM - 9:00 PM',
        'thu' => '9:00 AM - 9:00 PM',
        'fri' => '9:00 AM - 9:00 PM',
        'sat' => '11:00 AM - 6:00 PM',
        'sun' => 'closed'
    );

    print date_i18n($format, current_time('timestamp'));
    print $hour;

}
add_action( 'woocommerce_archive_description', 'sat_clock' );

在执行我的任何代码之前,收到消息时会引发错误:

QueueMessage[] retrievedMessage = queueClient.ReceiveMessages();
byte[] data = Convert.FromBase64String(retrievedMessage[0].MessageText);
...decompress etc. no errors thrown, works fine...

但是解压效果很好,原始消息是完整无误的。

在这种情况下,我正在使用Visual Studio 2019和云(而不是本地模拟)存储从本地计算机运行触发器。还已将该功能部署到Azure。

任何人都有见识吗?我不想部署该应用程序,因为每条消息都会引发错误。功能应用程序使用所有最新的库版本。函数应用自动从base64执行转换有点奇怪,但这似乎是默认行为。谢谢。

0 个答案:

没有答案