如何在 ASP.NET 核心 RC2 应用程序中手动重新加载 IOptions

How to manually reload IOptions in ASP.NET Core RC2 application

我有 asp.net 核心 Rc2 应用程序。为了存储系统设置,我使用了这样配置的 IOptions 机制:

services.AddOptions();
services.AddSingleton<IOptions<DocumentParameters>, DocumentParametersConfigureOptions>();

所有参数都从数据库中的 DocumentParametersConfigureOption class 加载。由于这个解决方案,所有系统设置都可以轻松注入 controllers/services 并缓存在服务器端(它们仅在应用程序启动时加载)。

我还有一个可以修改设置的页面(在数据库中修改)。我想知道如何在用户单击保存而不重新启动 Web 应用程序服务的情况下重新加载它们。

我会创建第二组 IOptions 并用 AddTransientAddScoped 注入它们。

每次请求时都会创建瞬态服务,每次请求都会创建一次作用域服务。

Here's a link 到有关使用寿命的文档。

memory caching中使用。

加载时,将您的配置放在那里。在结论性 connections/resolves 上,从那里开始阅读。当您通过 UI 更新它时,只需使缓存无效(即使用取消令牌,请参阅上面的 link)或手动将其放回那里覆盖现有值。

在 asp.net 核心 1.1 上,您可以使用 IOptionsSnapshot

实现此目的