Odpowiedz

12

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

Powiązane problemy