mój projekt używa App.config do odczytu właściwości config. Przykład: ConfigurationManager.AppSettings["MaxThreads"]
Czy znasz bibliotekę, której mogę użyć do odczytania config z json. Dzięki.Jak zmienić App.config na plik konfiguracyjny json w .Net Core
Odpowiedz
Klasa statyczna ConfigurationManager
nie jest ogólnie dostępna w środowisku ASP.NET Core. Zamiast tego powinieneś użyć nowego systemu ConfigurationBuilder
i mocno wpisanej konfiguracji.
Na przykład, domyślnie konfiguracja jest zbudowany w klasie Startup
używając coś podobnego do następującego:
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();
}
To będzie załadować konfigurację z pliku appsettings.json
i dołączyć klawisze korzeń konfiguracji. Jeśli masz AppSettings złożyć tak:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ThreadSettings" : {
"MaxThreads" : 4
}
}
Następnie można następnie utworzyć silnie wpisane ThreadSettings
klasa podobna do następującej:
public class ThreadSettings
{
public int MaxThreads {get; set;}
}
Wreszcie, można powiązać ten silnie wpisany klasy ustawienia do konfigurację, dodając metodę Configure
do metody ConfigureServices
.
using Microsoft.Extensions.Configuration;
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ThreadSettings>(Configuration.GetSection("ThreadSettings"));
}
Następnie można wstrzyknąć i uzyskać dostęp do swojej klasy ustawień z dowolnego innego miejsca przez wstrzyknięcie jej do konstruktora. Na przykład:
public class MyFatController
{
private readonly int _maxThreads;
public MyFatController(ThreadSettings settings)
{
maxThreads = settings.MaxThreads;
}
}
Wreszcie, jeśli naprawdę potrzebujesz dostępu do podstawowej konfiguracji można również wstrzykiwać że ConfigureServices
udostępnić go w swoich klasach.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(Configuration);
}
można przeczytać więcej na temat konfiguracji na docs lub variousblogs