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

.Net 5 Functions App的Service Bus Topic触发器无法接收JSON数据问题

问题根因

你当前使用的是.NET 5对应的Azure Functions隔离进程运行模型,运行时对Service Bus触发器的入参绑定逻辑会默认读取消息的Content-Type头做自动类型转换:

  • 当Content-Type为text/plain时,运行时会直接把消息体转成字符串赋值给string类型的入参,所以能正常接收
  • 当Content-Type为application/json时,运行时会默认尝试将消息体反序列化为入参对应的类型,string类型没有对应的反序列化规则,就会出现获取不到数据的问题

解决方法

场景1:需要直接获取原始JSON字符串

将触发器入参修改为ServiceBusReceivedMessage类型,手动读取消息体内容即可,该方案可以兼容所有Content-Type的消息:

  1. 先安装依赖NuGet包:Azure.Messaging.ServiceBus
  2. 修改代码如下:
[Function("ServiceBusFunction")]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public static string Run(
    [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage item,
    FunctionContext context)
{
    var logger = context.GetLogger("ServiceBusFunction");
    // 读取原始消息体字符串
    string rawMessage = item.Body.ToString();
    logger.LogInformation(rawMessage);
    // 后续可自行使用System.Text.Json/Newtonsoft.Json反序列化得到复杂对象
    var message = $"Output message created at {DateTime.Now}";
    return message;
}

场景2:需要直接得到反序列化后的强类型复杂对象

先定义和JSON结构匹配的实体类,直接将入参改为对应的实体类类型,运行时会自动完成反序列化:

  1. 定义实体类示例:
public class CustomMessage
{
    // 属性名需要和JSON字段名匹配,也可以通过[JsonPropertyName]特性指定映射关系
    public int Id { get; set; }
    public string Content { get; set; }
    public DateTime CreateTime { get; set; }
}
  1. 修改触发器代码:
[Function("ServiceBusFunction")]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public static string Run(
    [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] CustomMessage item,
    FunctionContext context)
{
    var logger = context.GetLogger("ServiceBusFunction");
    // 直接使用反序列化后的对象
    logger.LogInformation($"消息ID:{item.Id},内容:{item.Content}");
    var message = $"Output message created at {DateTime.Now}";
    return message;
}

注意事项

  • 通过Azure门户发送消息时,请确认消息体为合法JSON格式,且Content-Type字段已正确填写为application/json
  • 如果强类型绑定出现字段为空的情况,请检查实体类属性和JSON字段的名称、类型是否匹配,是否添加了正确的序列化映射特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:39:04