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

.NET5 Linux环境Function App双下划线Service Bus配置绑定报错原因

报错原因

该问题由Azure Functions WebJobs SDK的触发器配置解析规则与.NET常规分层配置解析规则的差异导致:

  • .NET 配置体系为适配Linux系统不支持冒号(:)作为配置键分隔符的特性,会自动将双下划线(__)识别为分层配置的分隔符,因此你定义的ServiceBusConfiguration__ConnectionString可以正常通过IOptions模式绑定到ServiceBusConfiguration.ConnectionString属性。
  • 但Service Bus触发器所属的WebJobs Service Bus扩展解析Connection属性时,会自动将传入的键名中的双下划线替换为冒号,再去配置源匹配对应值:当你给Connection属性赋值为ServiceBusConfiguration__ConnectionString时,扩展实际会查找名为ServiceBusConfiguration:ConnectionString的配置键,你的配置文件中不存在该键,因此触发连接字符串缺失的报错。
解决方法

无需维护两份重复的连接字符串,可任选以下方案实现兼容:

方案1:修改触发器Connection属性值

直接将Connection属性值改为冒号分隔的层级键即可,Linux环境下.NET配置系统会自动将冒号转换为双下划线匹配配置键,同时满足IOptions绑定和触发器读取的需求:

[Function("v1-on-send-invitation-email")]
public async Task OnSendInvitationEmailAsync
(
    [ServiceBusTrigger("emails", Connection = "ServiceBusConfiguration:ConnectionString")]
    string requestMessage
)
{
  // 业务逻辑
}

方案2:启动时做配置映射

如果不想修改触发器代码,可以在Function App的启动配置逻辑中,手动将ServiceBusConfiguration__ConnectionString的值映射到触发器需要的配置键,无需重复编写配置值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:18:02