'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
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