阅读 appsettings.json - 字段保持为空
Posted
技术标签:
【中文标题】阅读 appsettings.json - 字段保持为空【英文标题】:Read appsettings.json - Fields remain null 【发布时间】:2019-06-04 11:34:02 【问题描述】:认为我的 startup.cs 有问题,因为我没有从我的 <IOption> config
获得任何值
所以.. 我们有我们的 appsettings.json
"Config":
"ApplicationName": "some name",
"ConnectionString": "someconstring",
"Version": "1.0.0"
,
这里有我们的模型
public class Config
public string ApplicationName get; set;
public string ConnectionString get; set;
public string Version get; set;
startup.cs
public Startup(IConfiguration configuration)
Configuration = configuration;
public static IConfiguration Configuration get; set;
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<Config>(Configuration);
然后在我们的控制器中,我尝试加载这些数据,但不幸的是它们仍然是空的。
private IOptions<Config> config;
public CompaniesController(IOptions<Config> config)
this.config = config;
我尝试用类似的东西更改 startup.cs
services.Configure<Config>(options =>
options.ConnectionString = Configuration.GetSection("Config:ConnectionString").Value;
);
但这似乎不起作用。
资源我一直在使用:
https://dzone.com/articles/dynamic-connection-string-in-net-core
https://***.com/questions/31453495/how-to-read-appsettings-values-from-json-file-in-asp-net-core
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2
但显然我在这里遗漏了一个关键点。
编辑:我使用的是 ASP.Net Core 2.0
编辑2:
Program.cs
public class Program
public static void Main(string[] args)
BuildWebHost(args).Run();
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
整个 Appsettings.json 文件
"Config":
"ApplicationName": "somename",
"ConnectionString": "someconstring",
"Version": "1.0.0"
,
"Logging":
"IncludeScopes": false,
"Debug":
"LogLevel":
"Default": "Warning"
,
"Console":
"LogLevel":
"Default": "Warning"
编辑 3: 在我的前端应用程序中,我像这样导入 API。
【问题讨论】:
你试过了吗? ***.com/a/31453663/177416 我建议您从appsettings.json
文件中删除Config
***属性。它没有提供任何价值,因为 appsettings 已经是“配置”,它应该使 services.Configure<Config>(Configuration)
工作。
【参考方案1】:
services.Configure<Config>(Configuration);
此行未达到预期结果,因为您要查找的 JSON 属性嵌套在 appsettings.json
文件中的 Config
属性下。要按预期加载这些值,请使用GetSection
获取Config
部分并将that 传递给Configure<TOptions>
方法:
services.Configure<Config>(Configuration.GetSection("Config"));
【讨论】:
【参考方案2】: services.Configure<Config>(options =>
options.ConnectionString = Configuration.GetValue<string>("Config:ConnectionString");
options.ApplicationName = "test";
);
如果您想更细致地配置选项。
【讨论】:
以上是关于阅读 appsettings.json - 字段保持为空的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 应用程序中的 appsettings.json 与 appsettings.Environment.json
用 appsettings.Production.json 中的设置覆盖 appsettings.json 中的数组设置
appsettings.json 和 runtimeconfig.json 有啥区别?