繁体   English   中英

从 IConfiguration 中的其他 appsetting 文件读取问题

[英]Problem to read from other appsetting file in IConfiguration

我在 .net Core 3.1 中有一个 webapi 项目,而且我有 2 个 appsettings 文件appsettings.jsonappsettingsTest.json

appsettings.json 文件:

{
"Section": {
"Mofid": "appSettings.json"
}
}

appsettingsTest.json 文件:

{
"Section": {
    "Mofid": "appSettingsTest.json"
}
}

我在startup.cs class 的构造函数中编写了这段代码

public Startup(IConfiguration configuration, IWebHostEnvironment env)
    {

        configuration = new ConfigurationBuilder().SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettingsTest.json")
            .Build();

        Configuration = configuration;
    }

在 controller 我注入IOptins<T>IConfiguration ,我有 2 个动作。

第一个动作使用IOptions读取设置值,另一个动作从IConfiguration读取值

public class WeatherForecastController : ControllerBase
{
    private readonly IConfiguration _configuration;
    private readonly MofidOption _option;

    public WeatherForecastController(
        IOptions<MofidOption> options,
        IConfiguration configuration
        )
    {
        _option = options.Value;
        _configuration = configuration;
    }

    [HttpGet]
    public string Get1()
    {
        return _option.Mofid; //read from appsettingsTest.json
    }


    [HttpGet]
    public string Get2()
    {
        return _configuration["Section:Mofid"]; //read from appsettings.json
    }
}

我的问题是IConfiguration从 appsettings.json 读取,而appsettings.jsonIOptions appsettingsTest.json

我想从appsettingsTest.json读取IConfiguration

我怎样才能做到这一点?

如果您在 Startup 构造函数中修改配置,则需要将其注册到 DI 框架。

services.AddSingleton<IConfiguration>(Configuration);

理想情况下,您应该从 CreateHostBuilder 方法更改配置。

    public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.AddJsonFile("MyConfig.json",
                optional: true,
                reloadOnChange: true);
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM