Вам необходимо настроить это в вашей 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 Docs: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#access-configuration-during-startup
Разделение проблем
Если вы разделяете свое решение на несколько проектов с использованием библиотек классов, пакет Microsoft.Extensions.Options.ConfigurationExtensions пригодится для чтения значений из файлов appsettings
и внедрения их в классы конфигурации в проектах..
У него есть 2 расширения, которые вы можете использовать:
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
Я определяю конфигурации, называемые "AppIdentitySettings", для опций идентификации, которые я хочу настроить в ASP.NET Core Identity
framework в моем веб-каталоге /начальный проект.
{
"ConnectionStrings": {
...
},
"AppIdentitySettings": {
"User": {
"RequireUniqueEmail": true
},
"Password": {
"RequiredLength": 6,
"RequireLowercase": true,
"RequireUppercase": true,
"RequireDigit": true,
"RequireNonAlphanumeric": true
},
"Lockout": {
"AllowedForNewUsers": true,
"DefaultLockoutTimeSpanInMins": 30,
"MaxFailedAccessAttempts": 5
}
},
"Recaptcha": {
...
},
...
}
Классы конфигурации
Затем необходимо определить классы конфигурации, которые являются просто POCO, для представления вашей структуры конфигурации в 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://stackoverflow.com/a/46940811/2343826