嵌套 class 属性 未从配置 ASP.NET 核心中正确填充
Nested class property not fill properly from configuration ASP.NET Core
我需要在 ASP.NET Core 2.2 中填写 appsetting.json
中的以下信息。
"SiteSetting": {
"JwtSetting": {
"SecretKey": "LongerThan-16Char-SecretKey",
"Issuer": "MyWebsite",
"Audience": "MyWebsite",
"NotBeforeMinutes": "0",
"ExpirationMinutes": "60"
}
}
这是我的 SiteSetting
class :
public class SiteSetting
{
public JwtSetting JwtSettings { get; set; }
}
public class JwtSetting
{
public string SecretKey { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
public int NotBeforeMinutes { get; set; }
public int ExpirationMinutes { get; set; }
}
我在 Startup.cs
中使用此代码来填充 SiteSetting
:
public IConfiguration Configuration { get; }
private SiteSetting _siteSetting;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
_siteSetting = configuration.GetSection(nameof(SiteSetting)).Get<SiteSetting>();
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<SiteSetting>(Configuration.GetSection(nameof(SiteSetting)));
}
但是当我调试它时,_siteSetting
为空。
有什么问题吗?我该如何解决这个问题?
您在 AppSettings.json
中定义了 JwtSetting
,但在 SiteSetting
class 中,您将其命名为 JwtSettings。 Class 属性 名称和 JSON 属性 键应该完全相同才能被自动解析。
像这样更改您的 AppSettings.json 即可正常工作:
"SiteSetting": {
"JwtSettings": {
"SecretKey": "LongerThan-16Char-SecretKey",
"Issuer": "MyWebsite",
"Audience": "MyWebsite",
"NotBeforeMinutes": "0",
"ExpirationMinutes": "60"
}
}
我需要在 ASP.NET Core 2.2 中填写 appsetting.json
中的以下信息。
"SiteSetting": {
"JwtSetting": {
"SecretKey": "LongerThan-16Char-SecretKey",
"Issuer": "MyWebsite",
"Audience": "MyWebsite",
"NotBeforeMinutes": "0",
"ExpirationMinutes": "60"
}
}
这是我的 SiteSetting
class :
public class SiteSetting
{
public JwtSetting JwtSettings { get; set; }
}
public class JwtSetting
{
public string SecretKey { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
public int NotBeforeMinutes { get; set; }
public int ExpirationMinutes { get; set; }
}
我在 Startup.cs
中使用此代码来填充 SiteSetting
:
public IConfiguration Configuration { get; }
private SiteSetting _siteSetting;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
_siteSetting = configuration.GetSection(nameof(SiteSetting)).Get<SiteSetting>();
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<SiteSetting>(Configuration.GetSection(nameof(SiteSetting)));
}
但是当我调试它时,_siteSetting
为空。
有什么问题吗?我该如何解决这个问题?
您在 AppSettings.json
中定义了 JwtSetting
,但在 SiteSetting
class 中,您将其命名为 JwtSettings。 Class 属性 名称和 JSON 属性 键应该完全相同才能被自动解析。
像这样更改您的 AppSettings.json 即可正常工作:
"SiteSetting": {
"JwtSettings": {
"SecretKey": "LongerThan-16Char-SecretKey",
"Issuer": "MyWebsite",
"Audience": "MyWebsite",
"NotBeforeMinutes": "0",
"ExpirationMinutes": "60"
}
}