您需要在Startup
配置中设置此项。
public class Startup
{
private readonly IConfiguration _config;
public Startup(IConfiguration config)
{
_config = config;
}
public void ConfigureServices(IServiceCollection services)
{
var value = _config["key"];
}
public void Configure(IApplicationBuilder app, IConfiguration config)
{
var value = config["key"];
}
}
MS文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#access-configuration-during-startup
关注点分离
如果你将解决方案分成多个项目并使用类库,Microsoft.Extensions.Options.ConfigurationExtensions包可以轻松读取appsettings
文件中的值,并将其注入到项目中的配置类中。
该包有两个扩展可供使用:
public static T Get<T>(this IConfiguration configuration);
public static IServiceCollection Configure<TOptions>(this IServiceCollection services,
IConfiguration config) where TOptions : class;
示例:
我将所有与安全相关的服务使用 Microsoft.AspNetCore.Identity
放入名为 DL.SO.Services.Security
的项目中。
appsettings.json 中的安全设置
我在我的 web/start-up 项目中定义了一个名为 "AppIdentitySettings" 的配置,用于设置我想要在 ASP.NET Core Identity
框架中设置的身份验证选项。
{
"ConnectionStrings": {
...
},
"AppIdentitySettings": {
"User": {
"RequireUniqueEmail": true
},
"Password": {
"RequiredLength": 6,
"RequireLowercase": true,
"RequireUppercase": true,
"RequireDigit": true,
"RequireNonAlphanumeric": true
},
"Lockout": {
"AllowedForNewUsers": true,
"DefaultLockoutTimeSpanInMins": 30,
"MaxFailedAccessAttempts": 5
}
},
"Recaptcha": {
...
},
...
}
配置类
然后您需要定义配置类,它们只是 POCOs(Plain Old CLR Object),用于表示 appsettings.json
中的配置结构。配置类的名称不必与您在 appsettings.json
中定义的部分名称匹配,而是属性的名称需要匹配。
namespace DL.SO.Services.Security
{
public class AppIdentitySettings
{
public UserSettings User { get; set; }
public PasswordSettings Password { get; set; }
public LockoutSettings Lockout { get; set; }
}
public class UserSettings
{
public bool RequireUniqueEmail { get; set; }
}
public class PasswordSettings
{
public int RequiredLength { get; set; }
public bool RequireLowercase { get; set; }
public bool RequireUppercase { get; set; }
public bool RequireDigit { get; set; }
public bool RequireNonAlphanumeric { get; set; }
}
public class LockoutSettings
{
public bool AllowedForNewUsers { get; set; }
public int DefaultLockoutTimeSpanInMins { get; set; }
public int MaxFailedAccessAttempts { get; set; }
}
}
以下是来自于并更加详细的内容:
https://dev59.com/QFYN5IYBdhLWcg3wxqhu#46940811。