You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function Event Hub触发器出现System.Byte[]类型不支持序列化错误

问题原因

你遇到的错误由于不支持 System.Byte[] 类型,序列化操作失败,本质是部分发送到源Event Hub的消息以原始字节数组(byte[])形式写入,而你当前Azure Function的Event Hub输出绑定默认使用JSON序列化器,遇到未封装的byte[]类型就会触发异常。能正常流转的消息均为字符串、JSON对象等序列化器默认支持的类型。

解决方案

可任选以下任意一种方案修复:

  • 方案1:修改输出绑定配置,直接透传原始消息
    如果你使用C#进程内(In-Process)模型,直接将输出参数类型改为EventData或者byte[]即可跳过默认序列化逻辑,示例代码:
    [FunctionName("EventHubDataTransfer")]
    public static async Task Run(
        [EventHubTrigger("sourceHubName", Connection = "SourceEventHubConnection")] EventData[] inputEvents,
        [EventHub("targetHubName", Connection = "TargetEventHubConnection")] IAsyncCollector<EventData> outputCollector,
        ILogger log)
    {
        foreach (var eventItem in inputEvents)
        {
            await outputCollector.AddAsync(eventItem);
        }
    }
    
  • 方案2:封装字节数组为可序列化类型
    如果你需要保留原有JSON序列化逻辑,可以将byte[]转换为Base64字符串后再输出,示例代码:
    string outputContent = Convert.ToBase64String(rawByteArray);
    
  • 方案3:自定义序列化规则(适用于隔离进程(Isolated Worker)模型)
    隔离进程模型默认使用System.Text.Json做序列化,你可以在Program.cs中为byte[]类型添加自定义序列化转换器,或者配置输出绑定跳过序列化直接传递二进制内容。

内容的提问来源于stack exchange,提问作者Jagan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:36:08