5

'daki json yapılandırma dosyasına nasıl değiştirileceği projem, config özelliğini okumak için App.config dosyasını kullanır. Örnek: ConfigurationManager.AppSettings["MaxThreads"] Yapılandırmayı json'dan okumak için kullanabileceğim bir kitaplıktan biliyor musunuz? Teşekkürler.App.config öğesinin, .Net Core

cevap

12

ConfigurationManager statik sınıfı genelde ASP.NET Core'da bulunmamaktadır. Bunun yerine, yeni ConfigurationBuilder sistemini ve güçlü bir şekilde yazılan yapılandırmayı kullanmalısınız. Bu appsettings.json dosyadan yapılandırmayı yüklemek ve anahtarları yapılandırma kökünü ekler

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(); 
} 

:

Örneğin, varsayılan olarak, bir yapılandırma aşağıdaki benzer bir şey kullanarak Startup sınıfında inşa edilmiştir. Bir appSettings varsa gibi dosya aşağıdaki: Eğer bu kesinlikle yazılı ayarlar sınıfını bağlayabilir, Nihayet

public class ThreadSettings 
{ 
    public int MaxThreads {get; set;} 
} 

:

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
    "Default": "Debug", 
    "System": "Information", 
    "Microsoft": "Information" 
    } 
    }, 
    "ThreadSettings" : { 
    "MaxThreads" : 4 
    } 
} 

Sonra sonra kesinlikle yazılı aşağıdakine benzer ThreadSettings sınıf oluşturabilir ConfigureServices yönteminize Configure yöntemini ekleyerek yapılandırmanızı.

using Microsoft.Extensions.Configuration; 
public void ConfigureServices(IServiceCollection services) 
{ 
    services.Configure<ThreadSettings>(Configuration.GetSection("ThreadSettings")); 
} 

Daha sonra enjekte ve yapıcı içine enjekte ederek anyother yerden ayarları sınıfa erişebilirsiniz. Örneğin: Eğer gerçekten altta yatan yapılandırmaya erişmeniz gerekiyorsa

public class MyFatController 
{ 
    private readonly int _maxThreads; 
    public MyFatController(ThreadSettings settings) 
    { 
     maxThreads = settings.MaxThreads; 
    } 
} 

Son olarak, ayrıca sınıflarında kullanılabilir hale getirmek için ConfigureServices o enjekte edebilir.

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddSingleton(Configuration); 
} 

Sen docs veya üzerinde yapılandırması hakkında daha fazla bilgi bulabilirsiniz variousblogs