2016-09-15 12 views
6

Yıllardır kullandığım bir standart .NET 4.5.2 kitaplığım var. Uygulamamın veya web.config dosyalarının appSettings bölümünde belirli bir ayarlar kümesinin bulunduğundan emin olmak için ConfigurationManager.AppSettings'e bağımlılık var. Bu değerleri iletmenin bir yolu yoktur. Bunları appSettings bölümüne koymanız gerekir..NET Core Tüketici standart .NET Kitaplığı'nı ConfigurationManager.AppSettings kullanarak kullanıyor

.NET Core'da yeni bir projeye başlıyorum ancak Net452'yi hedefliyorum, böylece bir dizi kitaplıktan yararlanabiliyorum (şimdiye kadar gayet iyi çalışıyor).

Bu en son kitaplıkta sorun yaşıyorum çünkü ConfigurationManager.AppSettings'in bunları bulabilmesi için ayarların doğru şekilde nasıl ayarlanacağını anlayamıyorum.

AppSettings.json uygulamasında bunları koymak işe yaramıyor. Bir web.config içine koymak da işe yaramıyor.

Bu mümkün mü?

Teşekkürler!

cevap

6

Evet, istediğiniz şey mümkündür, ancak el ile yapmanız gerekir (kolay bir yol olup olmadığını bilmiyorum). Startup.cs Yapıcıda

{ 
    "AppSettings" : { 
     "Setting1": "Setting1 Value" 
    } 
} 

değerle ConfigurationManager.AppSettings set:

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(); 

     // copy appsetting data into ConfigurationManager.AppSettings 
     var appSettings = Configuration.GetSection("AppSettings").GetChildren(); 
     foreach (var setting in appSettings.AsEnumerable()) 
     { 
      ConfigurationManager.AppSettings[setting.Key] = setting.Value; 
     } 
    } 

Ve sınıf kitaplığında değeri elde:

var conStr = ConfigurationManager.AppSettings["Setting1"].ToString(); 

aşağıdaki gibi appsettings.json bazı ayarları vardır varsayalım
+2

Bu bahşiş için teşekkürler! Dikkat edilmesi gereken bir şey de System.Configuration.Abstractions üzerinde (project.json) bir bağımlılığa ihtiyaç duyacaksınız, böylece ConfigurationManager sınıfını bulabilmeniz için System.Configuration ad alanını kullanabilirsiniz. Ama bir şampiyon gibi çalışıyor! – retsvek