Azure Service Bus配置加载异常:Queues属性始终为Null
问题:Azure Service Bus配置中Queues始终为Null
appsettings.json相关配置段
"AzureServiceBus": { "ConnectionString": "XXXX", "Queues": { "Name": "DummyMessageQueue", "Pub" : true, "Sub" : true } },
问题核心:_serviceBusConfiguration.Queues(原提问误写为Quotes)始终为Null,无法加载对应配置内容。
Program.cs配置代码
最初的配置加载代码:
// 注册Azure Service Bus配置选项 builder.Services.Configure<ServiceBusConfigurationOptions>( builder.Configuration.GetSection("AzureServiceBus"));
尝试过以下方法但未解决问题:
- 添加GetChildren导致编译错误:
builder.Services.Configure<ServiceBusConfigurationOptions>(builder.Configuration.GetSection("AzureServiceBus").GetChildren<List<Queue>>());
- 使用Bind方法绑定配置:
builder.Services.Configure<ServiceBusConfigurationOptions>(options => builder.Configuration.GetSection("AzureServiceBus").Bind(options));
- 手动获取配置子节点:
var x = builder.Configuration.GetSection("AzureServiceBus"); x.GetChildren(); builder.Services.Configure<ServiceBusConfigurationOptions>(x);
依赖注入方式
服务构造函数中注入配置的代码:
public MessageReceiver(ILogger<MessageReceiver<T>> logger, IOptions<ServiceBusConfigurationOptions> serviceBusConfiguration) { _logger = logger; _serviceBusConfiguration = serviceBusConfiguration.Value; }
问题依旧:_serviceBusConfiguration.Queues始终为Null。
实体类定义
public class ServiceBusConfigurationOptions { public string ConnectionString { get; set; } public string QueueName { get; set; } public List<Queue> Queues { get; set; } } public class Queue { public string Name { get; set; } public bool Sub { get; set; } public bool Pub { get; set; } }
解决方案
问题根源是配置结构与实体类定义不匹配:
配置文件中Queues是单个对象(用{ ... }包裹),但实体类中Queues被定义为集合类型List<Queue>,导致配置绑定失败,最终值为Null。
两种修复方案任选其一:
- 修改配置文件,将
Queues改为数组格式(支持多个队列配置):
"AzureServiceBus": { "ConnectionString": "XXXX", "Queues": [ { "Name": "DummyMessageQueue", "Pub" : true, "Sub" : true } ] },
- 修改实体类,将
Queues改为单个Queue对象(仅支持单个队列配置):
public class ServiceBusConfigurationOptions { public string ConnectionString { get; set; } public string QueueName { get; set; } public Queue Queues { get; set; } // 从List<Queue>改为Queue类型 }
内容的提问来源于stack exchange,提问作者Linda Lawton - DaImTo
相关产品推荐
相关产品推荐

