我有一个asp.net Core Rc2应用程序。为了存储系统设置,我使用配置了IOptions机制,如下所示:
services.AddOptions();
services.AddSingleton<IOptions<DocumentParameters>, DocumentParametersConfigureOptions>();
所有参数都在DocumentParametersConfigureOption类中从数据库加载。由于这种解决方案,所有系统设置都可以轻松注入到控制器/服务中,并且在服务器端缓存(仅在应用程序启动时加载)。
我还有一个页面,可以修改设置(在数据库中修改)。我想知道如何在用户点击保存时重新加载它们,而不必重新启动Web应用程序服务。
AddSingleton
更改为AddScoped
。但这意味着每个请求都会访问一次数据库,这可能是要避免的。问题在于如何知道何时重新加载设置以响应更改。还要注意,当网页更改时,您不希望更改选项的单例实例,因为它可能会导致某些请求处于脏状态(其中一些设置在更改之前读取,但一些在之后读取)。 - KiranIMemoryCache
服务,可以通过在Startup
类中使用services.AddMemoryCache()
注入。 - Brad