1
私はdi-containerに設定値を保存しています。設定は管理ページから変更できますが、私に古い設定値を与えてくれます。 .netコアのコンテナ値/サービスを更新する方法。いくつかのタスクが実行されたときにasp.net core di containerを後で更新する方法
私はdi-containerに設定値を保存しています。設定は管理ページから変更できますが、私に古い設定値を与えてくれます。 .netコアのコンテナ値/サービスを更新する方法。いくつかのタスクが実行されたときにasp.net core di containerを後で更新する方法
強いタイプの設定を直接注入する代わりに、IOptionsSnapshot<T>
を注入する必要があります。T
は設定クラスです。これにより、設定がリロードされたときに値が更新されます。あなたが代わりに直接IOptionsSnapshot
を使用するには、依存性注入を設定することができ
public class MyController : Controller
{
private readonly IOptionsSnapshot<MySettings> _settings;
public MyController(IOptionsSnapshot<MySettings> settings)
{
_settings = settings;
}
...
}
:たとえば
services.Configure<MySettings>(Configuration.GetSection("MySettings"));
services.AddScoped(cfg => cfg.GetService<IOptionsSnapshot<MySettings>>().Value);
次に、あなただけ以前のように自分のコントローラにMySettings
を注入し続けることができます。
注:IOptionsSnapshot
は、ASP.NET Core 1.1以降で利用できます。以前のバージョンで設定をリロードする方法はありません。