В моем проекте используется App.config для чтения свойства конфигурации. Пример: ConfigurationManager.AppSettings["MaxThreads"]
Знаете ли вы о библиотеке, которую я могу использовать для чтения конфигурации из json. Благодарю.Как изменить файл app.config в json config в .Net Core
ответ
Статический класс ConfigurationManager
обычно не доступен в ASP.NET Core. Вместо этого вы должны использовать новую систему ConfigurationBuilder
и строго типизированную конфигурацию.
Например, по умолчанию, конфигурация построена в вашем Startup
классе, используя что-то похожее на следующее:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Это загрузит конфигурацию из файла appsettings.json
и добавить ключи корень конфигурации. Если у Вас есть AppSettings файл как следующее:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ThreadSettings" : {
"MaxThreads" : 4
}
}
Затем вы можете создать строго типизированный ThreadSettings
класс аналогично следующему:
public class ThreadSettings
{
public int MaxThreads {get; set;}
}
Наконец, вы можете связать это строго типизированный класс настройки для вашей конфигурации, добавив метод Configure
к вашему методу ConfigureServices
.
using Microsoft.Extensions.Configuration;
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ThreadSettings>(Configuration.GetSection("ThreadSettings"));
}
Затем вы можете ввести класс доступа и получить доступ к нему из любого другого места, введя его в конструктор. Например:
public class MyFatController
{
private readonly int _maxThreads;
public MyFatController(ThreadSettings settings)
{
maxThreads = settings.MaxThreads;
}
}
Наконец, если вы действительно должны иметь доступ к базовой конфигурации можно также вводить, что в ConfigureServices
, чтобы сделать его доступным в классах.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(Configuration);
}
Вы можете прочитать больше о конфигурации на docs или variousblogs