[英]Read appsettings.json - Fields remain null
認為我的 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; }
}
啟動.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://stackoverflow.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:
程序.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"
}
}
}
}
services.Configure<Config>(Configuration);
此行未達到預期結果,因為您要查找的 JSON 屬性嵌套在appsettings.json
文件中的Config
屬性下。 像預期的那樣加載這些值,使用GetSection
抓住Config
部並傳遞到Configure<TOptions>
方法:
services.Configure<Config>(Configuration.GetSection("Config"));
services.Configure<Config>(options =>
{
options.ConnectionString = Configuration.GetValue<string>("Config:ConnectionString");
options.ApplicationName = "test";
});
如果您想更詳細地配置您的選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.