5

2つのプロジェクト(.NET Core Web APIと.NET Core WindowsService)では、設定にappsettings.jsonを使用しています。私はIOptionsの依存性注入を介して注入としてreloadOnChangeが真とそれを使用に設定されている両方でMicrosoft.Extensions.ConfigurationのreloadOnChangeがappsettings.jsonのためにどのように動作するか

var configuration = new ConfigurationBuilder() 
      .SetBasePath(System.IO.Directory.GetCurrentDirectory()) 
      .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
      .AddEnvironmentVariables() 
      .Build(); 

。 Web API内でコントローラクラスに、サービス内で設定を使用するクラスに移動します。

残念ながら、appsettings.jsonが変更されても値が変更されないことがあります。

ウェブAPIで私はconfigから文字列値を返すコントローラを作成しました。これは起動時と同じままです。

だから私の質問:それは(少なくともウェブAPIで)箱から出して動作する必要がある場合

  1. 誰もが知っていますか?
  2. 私はそれを動作させる必要がありますか?
+0

どのようにオプションを登録していますか? 'services.Configure (Confiugration.GetSection(...))'を使用していますか?あなたは '.Bind()'を使っていますか? – Tseng

+0

どちらの場合もservices.Configure (Confiugration.GetSection(。..)) – monty

+0

通常は、上記のオーバーロードを呼び出すと登録された変更トークンを使用して動作します(https://github.com/aspnet/Options /blob/rel/1.1.0/src/Microsoft.Extensions.Options.ConfigurationExtensions/OptionsConfigurationServiceCollectionExtensions.cs#L35-L36)およびhttps://github.com/aspnet/Options/blob/rel/1.1.0/src/ Microsoft.Extensions.Options.ConfigurationExtensions/ConfigureFromConfigurationOptions.csトークンが起動されたときに再バインドをトリガーします。 – Tseng

答えて

3

reloadOnChangeのみASP.NETコア1.1で、より高いサポートされているので)あなたがいうだけでIOptionsよりも、それは実際にあなたが欲しいIOptionsSnapshot(参照 Configuration in ASP.NET Core - IOptionsSnapshot)の.NETコア1.1を使用していると仮定。

+0

これまでのところ動作していませんが、私は試し続けます – monty

+0

これは私のために働いた!私はコンストラクタを介して 'IOptions 'を注入しています。 'IOptionsSnapshot 'に変更すると、アプリを再起動することなくファイルの変更を反映して更新されます。 – Scott

関連する問題