Asp.Net Core'da Class Library'den appSettings.json dosyasını okumak
Bilindiği üzere .Net Core tarafında herşey interface'ler üzerinden DI (dependency injection) ile yürümeye başladı. Configuration class'ını kullanırken de yine IConfiguration interface'ini kullanmamız gerekiyor. Başlamadan önce class library'nize Nuget üzerinden Microsoft.Extension.Configuration ile ilgili 3 adet paket kurmamız gerekiyor.
Configuration class'ını kullanabilmek için IConfiguration interface'ini kullanıyoruz. Ekstra yapmanız gereken class library projenize appsettings.json dosyanızı eklemek.
appSettings.json için basit bir örnek:
{ "ConnectionStrings": { "DefaultConnection": "SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=sa;Password=sa;MultipleActiveResultSets=True;Connect Timeout=180" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "Environment": "Development" }
ConfigurationHelper adında bir class oluşturup içerisini aşağıdaki gibi doldurabilirsiniz. İlk başta ConfigurationBuilder sayesinde appsettings.json içeriğini alıp build ediyoruz ve IsDevelopment() metodunda ise appsettings içerisinde olan "environment" bölümünü okuyup geriye boolean değer dönüyoruz.
Projenizin farklı alanlarında referans gösterdikten sonra ConfigurationHelper.IsDevelopment() şeklinde kullanabilirsiniz. Static olarak tanımladığımız için yeni bir class üretmenize gerek yok. (Not: static yapmak zorunda değilsiniz.)
using Microsoft.Extensions.Configuration;
using System;
namespace Common.Helpers
{
public static class ConfigurationHelper
{
public static IConfiguration GetConfig()
{
var builder = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
return builder.Build();
}
public static bool IsDevelopment()
{
var settings = GetConfig();
return (settings["Environment"] != null && settings["Environment"] == "Development") ? true : false;
}
}
}