2016-03-21 15 views
3

ASP.NET 5'te güçlü bir şekilde yazılan yapılandırmayı kurdum ve mükemmel çalışıyor. Ayrıca, .json yapılandırma dosyaları değiştirildiğinde, otomatik olarak yeniden yüklenecek yapılandırmayı ayarladım. Ancak bu, yalnızca yazılmamış yapılandırmayı kullanırsam çalışır gibi görünüyor. Güçlü yazılan yapılandırma sınıfı, .json dosyaları değiştiğinde eski değerleri hala korur.ASP.NET 5: Nasıl değiştirildiğini büyük ölçüde yazılan yapılandırmayı yeniden yükle

böyle yapılandırmayı kuruyorum:

public IConfiguration Configuration { get; set; } 
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
{ 
    // Setup configuration sources 
    var builder = new ConfigurationBuilder() 
     .AddJsonFile("config.json") 
     .AddJsonFile($"config.{env.EnvironmentName}.json"); 
    Configuration = builder.Build() 
     .ReloadOnChanged("config.json") 
     .ReloadOnChanged($"config.{env.EnvironmentName}.json"); 
    /* ... (unrelated stuff edited away) ... */ 
} 

Ve bu şekilde bağlayıcı:

public void ConfigureServices(IServiceCollection services) 
{ 
    /* ... (unrelated stuff edited away) ... */ 
    services.AddOptions(); 
    services.AddInstance(Configuration); 
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); 
    services.Configure<DbSettings>(Configuration.GetSection("DbSettings")); 
    /* ... (unrelated stuff edited away) ... */ 
} 

(yapılandırma dosyaları şuna benzer :)

{ 
    "AppSettings": { 
     "This": "that", 
     "Foo": "bar" 
     /* etc... */ 
    }, 
    "DbSettings": { 
     /* (db settings here) */ 
    } 
} 

(Ve buna benzer bir C# sınıfına sahibim :)

public class AppSettings 
{ 
    public string This { get; set; } 
    public string Foo { get; set; } 
    /* etc... */ 
} 

Ben bağımlılık enjeksiyon yoluyla IOptions<AppSettings> kazanmak zaman config.json ve config.Dev.json dosyaları değiştirdiğinizde, değişmez. Yapılandırma sınıfı güncellemesi yapmak için tüm web uygulamasını yeniden başlatmalıyım. Ancak bunun yerine, untylenmemiş IConfiguration örneğini kullanırsam, json dosyalarını değiştirdiğimde otomatik olarak değişir.

Yani soru şudur: Webapp'ı yeniden başlatmaya gerek kalmadan .json dosyasını değiştirdiğimde güçlü yazılan yapılandırma nasıl değiştirilir?

+0

ile sabit Hiç bu sınırlamayı aşmak için yönetilen mü? Services.configure dosyasını dosya değişikliğine yüklemeye zorlamak mümkün mü? –

cevap

0

Configuration.GetSection() çağrıldığında, başlangıçta bu bölümde bir kez geçecektir.

Çalışma zamanında AppSettings seçenek güncelleştirmesini elde etmek için AppSettings seçeneğini yapılandırma bölümüne bağlamanız gerekir. asp.net çekirdek 1.1 üzerinde

services.Configure<AppSettings>(option => Configuration.GetSection("AppSettings").Bind(option)); 
+0

benim için çalışmıyor –