如何在中间件中获取设置?

时间:2018-12-13 22:37:02

标签: configuration asp.net-core-2.0 asp.net-core-middleware

我敢肯定这一定是重复的,但是我已经搜索了太久了,仍然找不到答案。

我想从此处访问配置选项(从json文件访问,尽管我认为问题与来源无关)

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.Run(async context =>
        {
            // Get my config values here and do something with them
            await Task.CompletedTask;
        });
    }

我可以使用var x = Config.GetValue<string>("AppSettings:MySetting:0");,但是因为它是一个列表,所以我必须创建一个循环并检索值,直到得到空值之类的东西为止,所以我宁愿做IOptions事情,也可以将其以强烈的方式加载为我输入课程。我在ConfigureServices中有以下代码:

services.AddOptions();
services.Configure<AppSettings>(Config.GetSection("AppSettings"));

但是我只是不知道如何从Configure方法中获取在那里注册的对象。

我还尝试在调试时检查Config.GetSection("AppSettings")的值,发现在json提供程序下可以看到我的设置。但是,尽管在检查器中可用,但是我看不到如何直接访问列表。也就是说,我可以使用GetValue()一次访问列表中的一个值,但我不能仅将整个列表作为一个值来访问。

1 个答案:

答案 0 :(得分:0)

就像经常发生的那样,在这里发表文章后,我终于弄清了我想要的东西。基本上,对于我的方案,我不需要IOptions或与DI有关的任何其他操作。我只需要使用.Bind()来将设置绑定到我的类的实例:

AppSettings a = new AppSettings();
Config.GetSection("AppSettings").Bind(a);