[英]How to inject IConfiguration from appsetting.json config file into his code?
[英]Problem to read from other appsetting file in IConfiguration
我在 .net Core 3.1 中有一个 webapi 项目,而且我有 2 个 appsettings 文件appsettings.json
和appsettingsTest.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.json
从IOptions
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.