首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将子设置配置设置加载到不加载列表的DI中

将子设置配置设置加载到不加载列表的DI中
EN

Stack Overflow用户
提问于 2022-11-04 07:57:46
回答 1查看 20关注 0票数 0

这是我的appsettings.json中有问题的一节

代码语言:javascript
复制
"AzureServiceBus": {
    "ConnectionString":  "XXXX",
    "Queues": {
      "Name": "DummyMessageQueue",
      "Pub" : true,
      "Sub" : true
    }
  },

问题是_serviceBusConfiguration.Quotes总是空的。它没有加载列表。

Program.cs

在我的program.cs中,我按以下方式加载它

代码语言:javascript
复制
// Register configuration options for the azure service bus in a options object. 
builder.Services.Configure<ServiceBusConfigurationOptions>(
    builder.Configuration.GetSection("AzureServiceBus"));

我尝试过添加GetChildren,但这只会导致编译错误。

代码语言:javascript
复制
builder.Services.Configure<ServiceBusConfigurationOptions>(builder.Configuration.GetSection("AzureServiceBus").GetChildren<List<Queue>>());

也没帮上忙

代码语言:javascript
复制
builder.Services.Configure<ServiceBusConfigurationOptions>(options => builder.Configuration.GetSection("AzureServiceBus").Bind(options));

也不起作用

代码语言:javascript
复制
var x = builder.Configuration.GetSection("AzureServiceBus");
x.GetChildren();
builder.Services.Configure<ServiceBusConfigurationOptions>(x);

Di法

然后,我的服务中的构造函数按以下方式加载

代码语言:javascript
复制
public MessageReceiver(ILogger<MessageReceiver<T>> logger,
        IOptions<ServiceBusConfigurationOptions> serviceBusConfiguration)
    {
        _logger = logger;
        _serviceBusConfiguration = serviceBusConfiguration.Value;

    }

问题是_serviceBusConfiguration.Quotes总是空的。它没有加载列表。

代码语言:javascript
复制
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; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-04 08:10:41

您的配置模型:

代码语言:javascript
复制
public class ServiceBusConfigurationOptions
{
    public string ConnectionString { get; set; }
    public string QueueName { get; set; }
    public List<Queue> Queues { get; set; }
}

队列是一个列表,但是在您的appsetting.json中,“队列”部分不是数组,这导致配置绑定失败。尝试将"AzureServiceBus“部分更改为:

代码语言:javascript
复制
"AzureServiceBus": {
    "ConnectionString":  "XXXX",
    "Queues": [{
      "Name": "DummyMessageQueue",
      "Pub" : true,
      "Sub" : true
    }]
  },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74313780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档