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

时间:2016-07-18 19:48:40

标签: asp.net-core .net-core-rc2

我有asp.net Core Rc2应用程序。要存储系统设置,我使用IOptions机制,配置如下:

$url = $this->tag->linkTo(
    array(
        array(
            'for' => 'application-details',
            'formUrl' => $form->url,
            'id' => $id
        ), 
        'Show'
    )
);

所有参数都是从DocumentParametersConfigureOption类中的数据库加载的。由于这个解决方案,所有系统设置都可以很容易地注入到控制器/服务中,并缓存在服务器端(它们仅在应用程序启动时加载)。

我还有一个页面,可以修改设置(在数据库中修改)。我希望在用户点击保存时重新加载它们,而无需重新启动Web应用程序。

3 个答案:

答案 0 :(得分:3)

memory caching中使用。

在加载时,将配置放在那里。在确定的连接/解析,从那里阅读。当您通过UI更新它时,只需使缓存无效(即使用取消令牌,请参阅上面的链接)或者只是将其手动放回到那里覆盖现有值。

答案 1 :(得分:0)

我会创建第二组IOptions并为其注入AddTransientAddScoped

每次请求时都会创建瞬态服务,并且每个请求都会创建一次范围服务。

Here's a link有关服务生命周期的文档。

答案 2 :(得分:0)

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

实现此目的