在旧版本的 .NET Core 中,您将所有全局设置保存在启动 cs 文件中,但据我所知,在 .NET Core 7+ 中,您将它们保存在结构上看起来不同的程序 cs 文件中 - 因此为什么这可能看起来像重复的问题。
我的目标是在运行时将应用程序设置 json 文件中的键绑定到类。提供应用程序设置 json 文件和类中的值,当您在构造函数中注入类并尝试读取值时,您应该能够将它们 1:1 绑定。
不幸的是,我似乎无法将其绑定。不知道我做错了什么。
我的尝试在program.cs文件中看起来像这样:
builder.Configuration.Bind(new AuthenticationConfiguration());
builder.Services.AddScoped<AuthenticationConfiguration>();
我的 appsettings .json 文件如下所示:
"Authentication": {
"AccessTokenSecret": "somekey",
"AccessTokenExpirationMinutes": "35",
"Issuer": "https://test.com:1234/",
"Audience": "https://test:1234/"
}
我的班级是这样的:
public class AuthenticationConfiguration
{
public string AccessTokenSecret { get; set; }
public int AccessTokenExpirationMinutes { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
}
我找到了解决方案:
我必须在我的程序cs文件中使用参考IOptions服务
builder.Services.AddOptions<AuthenticationConfiguration>()
.Bind(builder.Configuration.GetSection("Authentication"));
builder.Services.AddSingleton(sp => sp.GetRequiredService<IOptions<AuthenticationConfiguration>>().Value);