Microsoft.Extensions.Configuration的reloadOnChange如何为appsettings.json

时间:2017-04-11 08:51:11

标签: json asp.net-core .net-core appsettings asp.net-core-webapi

在两个项目(.NET Core Web API和.NET Core WindowsService)中,我使用appsettings.json进行配置。

 var configuration = new ConfigurationBuilder()
           .SetBasePath(System.IO.Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
           .AddEnvironmentVariables()
           .Build();

在两者中,我将reloadOnChange设置为true,并通过依赖注入将其用作注入IOptions。在web api中进入控制器类,在服务内进入使用设置的类。

不幸的是,我发现当appsettings.json发生变化时,值不会改变。

在web api上我创建了一个控制器,只是从配置中返回一个字符串值,这与启动时保持一致。

所以我的问题:

  1. 任何人都知道这是否应该开箱即用(至少在网络API中)?
  2. 我必须做的任何工作吗?

1 个答案:

答案 0 :(得分:7)

假设您使用的是.net-core 1.1(因为reloadOnChange仅在ASP.NET Core 1.1及更高版本中受支持),实际上您需要IOptionsSnapshot(参见  Configuration in ASP.NET Core - IOptionsSnapshot)而不仅仅是IOptions