私はasp.net Core Rc2アプリケーションを持っています。ASP.NET Core RC2アプリケーションでIOptionsを手動でリロードする方法
services.AddOptions();
services.AddSingleton<IOptions<DocumentParameters>, DocumentParametersConfigureOptions>();
すべてのパラメータはDocumentParametersConfigureOptionクラスのデータベースからロードされます:店舗システムの設定に私はそのように設定されているIOptionsメカニズムを使用します。このソリューションのおかげで、すべてのシステム設定をコントローラ/サービスに簡単に注入でき、サーバ側にキャッシュされます(アプリケーション開始時にのみロードされます)。
設定が変更できる(データベースで変更される)ページもあります。ユーザーがWebアプリケーションを再起動せずに[保存]をクリックしたときに、それらを再ロードしたいと思います。
私はAddScoped' 'にあなたの' AddSingleton'を変更することであると考えることができる最も簡単でこれを達成することができます。しかし、これは、あなたが避けたいと思っているすべてのリクエストに対してデータベースを1回ヒットすることを意味します。問題は、変更が発生したときに設定をリロードするタイミングを知ることにあります。また、Webページが変更されたときにオプションのシングルトンインスタンスを変更したくないということに注意してください。一部の要求が汚れた状態になる可能性があります(変更の前にいくつかの設定が読み込まれています)。 –
起動時にすべての設定を読み込む最初のアクセス時にそれらを読み込み遅延させてキャッシュすることを検討し、後続の要求がデータベースに送られないようにします。設定を変更すると、単にキャッシュを消去する必要があり、設定に対する次のアクセス要求がデータベースから再設定されます。あなたの 'Startup'クラスで' services.AddMemoryCache() 'を使って注入できる' IMemoryCache'サービスを調べる価値があります。 – Brad