Asp.Net Core'da Class Library'den appSettings.json dosyasını okumak

30 Ekim 2018 2 dk okuma süresi 9 okunma

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


Yazılarıma abone olmak ister misiniz?
Spam yapılmaz, sadece bildirim amaçlıdır. İstediğiniz zaman abonelikten çıkabilirsiniz.
İlginizi çekebilecek diğer yazılar.
Form post ile giden tüm dataları loglama

Hatalı bundle kullanımından dolayı alınan MIME type hatası ve çözümü

Specified Argument was out of the range of valid values Parameter name : site hatası ve çözümü