DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on • Updated on

Asp.net Core appsettings.json ve appsettings.Environment.json. Configuration'ların birbirini ezmesine Giriş.

Ders : Asp.net core
Konu : appsettings.Environment.json dosyasında olan configuration'ların, appsetting.json dosyasındaki configuration'ları ezmesi.

Adımlar :

1.) Bir model-view-controller uygulaması yaratın.

2.) appsettings.json aşağıdaki gibi TODO listesini ekleyelim (diğer ayarları silmeyelim kesinlikle sadece ekliyoruz) :

"TODO": {
    "Bir": "1",
    "Iki": "2",
    "Uc": "3",
    "Dort": "4",
    "Bes": "5",
    "Alti": "6"
  }
Enter fullscreen mode Exit fullscreen mode

3.) appsettings.json dosyasını aşağıdaki expand edelim :

alt text

ve appsettings.Development.json dosyasını açalım.

Daha sonra : appsettings.Development.json dosyasına aşağıdaki TODO listesini ekleyelim :

"TODO": {
    "Bir": "11",
    "Iki": "22",
    "Uc": "33",
    "Dort": "44",
    "Bes": "55",
    "Alti": "66"
  }
Enter fullscreen mode Exit fullscreen mode
Amacım sizlere appsettings.Development.json dosyasında configuration ayarlarının, appsettings.json ayarları ezdiğini göstermek, bunu için : HomeController'a aşağıdaki gibi IConfiguration di(dependecy injection) olarak eklemenizi gerekiyor. Yani :
 public class HomeController : Controller
    {
        private readonly IConfiguration _configuration;
        . 
        . 
        .
        public HomeController(..., IConfiguration configuration)
        {

            _configuration = configuration;
            .
            .
            .
        }
.
.
.

Enter fullscreen mode Exit fullscreen mode

HomeController'ın yukarıdaki benzer olması gerekiyor. (Üç noktalar diğer eklenebilcek şeyler gösteriyor. Kopyalarken üç noktaları siliniz.)

4.) Index.cshtml dosyasına appsettings'deki TODO listesi yazdırmak istiyorum. Bunun için : Index action'da bir tane List yaratıyorum ve daha sonra configuration'dan appsettings'in içerisindeki TODO item'larını List geçeceğim. Yani :

 public IActionResult Index()
        {
            List<string> degerler = new List<string>();

            string bir = _configuration["TODO:Bir"];
            string Iki = _configuration["TODO:Iki"];
            string Uc = _configuration["TODO:Uc"];
            string Dort = _configuration["TODO:Dort"];
            string Bes = _configuration["TODO:Bes"];
            string Alti = _configuration["TODO:Alti"];

            degerler.Add(bir);
            degerler.Add(Iki);
            degerler.Add(Uc);
            degerler.Add(Dort);
            degerler.Add(Bes);
            degerler.Add(Alti);
            return View(degerler);
Enter fullscreen mode Exit fullscreen mode

Burada yaptığım: "degerler" adında bir liste yarattım ve _configuration'dan "TODO:{item}" diyerek string değerleri appsettings dan almayı başardım. Daha sonra ise degerler listesine sayiları(bir,Iki,Uc vs..) ekleyip View' a model olarak döndürdüm.

5.) Şimdi yapmam gereken gönderdiğim listeyi Index.cshtml model olarak kullanmak. Bunun için Index.cshtml aşağıdaki gibi değiştirelim :

@model List<string>  
@foreach (var item in Model)
    {
        <p>@item</p>
    }
Enter fullscreen mode Exit fullscreen mode

6.) Uygulamayı çalıştıralım, göreceğiniz değerler aşağıki gibi olması gerekiyor :

alt text

Sonuç : Gördüğünüz üzere appsettings.json dosyasında ve appsettings.Development.json dosyasında aynı isme sahip olan(TODO) configuration ayarlarından, appsettings.Development.json daki ayarlar üstün geldi(yani appsettings.json'ı ezdi.).

Bir dahaki yazıda görüşmek dileğiyle.

Mustafa Samed Yeyin.

En iyi dileklerim ile.

Discussion (0)