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

30 Ekim 2018 2 dk okuma süresi 8 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.
Specified Argument was out of the range of valid values Parameter name : site hatası ve çözümü

VS2015'in 3. update'ini yaptıktan sonra asp.net core web uygulaması yaratmak istediğimde şu şekilde bir hata ile karşılaştım. "Exception : The system cannot find the file specified. (Exception from HRESULT: 0x80070002)". Çözümü oldukça basit.

Entity framework code first kullanıyorsanız ve inheritance yapıp yeni bir class yarattığınızda bunun gibi bir hata alırsınız. Bunun nedeni fluent api'nin inheritance yapılan class ile ana class'ın map yapmaya çalışması ve ilgili kolonu veritabanında bulamamasıdır. Çözümü ise inherit olmuş class'a [NotMapped] DataAnnotations attribute'unu eklemek.