ASP.NET 5で強く型付けされた構成をセットアップできました。 .json
設定ファイルが変更されたときに自動的にリロードするように設定しました。しかし、これは、型指定されていない構成を使用する場合にのみ有効です。 .json
ファイルが変更された場合でも、厳密に型指定された構成クラスは古い値を保持します。ASP.NET 5:変更時に厳密に型指定された構成を再ロードする方法
私はこのような構成を設定しています:
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) ... */
}
をそして、このようにそれを結合:
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) ... */
}
(コンフィギュレーションファイルは、次のようになります:)
{
"AppSettings": {
"This": "that",
"Foo": "bar"
/* etc... */
},
"DbSettings": {
/* (db settings here) */
}
}
(これに対応して、このようなC#クラスがあります:)
public class AppSettings
{
public string This { get; set; }
public string Foo { get; set; }
/* etc... */
}
私は依存性注入を経てIOptions<AppSettings>
を取得する場合、私はconfig.json
とconfig.Dev.json
ファイルを変更したとき、それは変更されません。 configクラスを更新するには、Webアプリ全体を再起動する必要があります。しかし、代わりに型なしのIConfiguration
インスタンスを使用すると、jsonファイルを変更すると自動的に変更されます。
質問:Webappを再起動しなくても、.jsonファイルを変更すると強く型付けされた設定を変更する方法は?
で固定あなたは今までこの制限を克服するために管理していましたか? services.configureをファイル変更時に強制的にロードすることは可能ですか? –