mor*_*tzg 12 c# asp.net configuration json
我有一个appsettings.json看起来像这样的文件:
{
"MyConfig": {
"ConfigA": "value",
"ConfigB": "value"
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Startup.cs建设中IConfiguration:
public ConfigurationRoot Configuration { get; set; }
public Startup(ILoggerFactory loggerFactory, IHostingEnvironment environment)
{
var builder = new ConfigurationBuilder()
.SetBasePath(environment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
//GetSection returns null...
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
Run Code Online (Sandbox Code Playgroud)
但Configuration.GetSection("MyConfig")总是返回null,尽管我的JSON文件中存在该值.Configuration.GetSection("MyConfig:ConfigA")工作得很好.
我究竟做错了什么?
cor*_*est 13
对于遇到这种情况并试图在测试项目中做同样事情的人来说,这对我有用:
other = config.GetSection("OtherSettings").Get<OtherSettings>();
Run Code Online (Sandbox Code Playgroud)
请参考下面的代码
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var config = Configuration.GetSection("MyConfig");
// To get the value configA
var value = config["ConfigA"];
// or direct get the value
var configA = Configuration.GetSection("MyConfig:ConfigA");
var myConfig = new MyConfig();
// This is to bind to your object
Configuration.GetSection("MyConfig").Bind(myConfig);
var value2 = myConfig.ConfigA;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |