Microsoft.Extensions.Configuration 的 reloadOnChange 如何为 appsettings.json 工作
How does reloadOnChange of Microsoft.Extensions.Configuration work for appsettings.json
在两个项目(.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
。在网络 api 中进入控制器 类 并在服务中进入使用设置的 类。
不幸的是,我发现 appsettings.json 更改时值不会更改。
在网络上 api 我创建了一个控制器,仅 return 来自配置的字符串值,这与启动时保持相同。
所以我的问题:
- 有人知道这是否应该开箱即用(至少在网络上 api)?
- 我必须做些什么才能奏效?
假设您使用的是 .net-core 1.1(因为 reloadOnChange
仅在 ASP.NET Core 1.1 及更高版本中受支持)它实际上是您想要的 IOptionsSnapshot
(cf.
Configuration in ASP.NET Core - IOptionsSnapshot) 而不仅仅是 IOptions
.
在两个项目(.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
。在网络 api 中进入控制器 类 并在服务中进入使用设置的 类。
不幸的是,我发现 appsettings.json 更改时值不会更改。
在网络上 api 我创建了一个控制器,仅 return 来自配置的字符串值,这与启动时保持相同。
所以我的问题:
- 有人知道这是否应该开箱即用(至少在网络上 api)?
- 我必须做些什么才能奏效?
假设您使用的是 .net-core 1.1(因为 reloadOnChange
仅在 ASP.NET Core 1.1 及更高版本中受支持)它实际上是您想要的 IOptionsSnapshot
(cf.
Configuration in ASP.NET Core - IOptionsSnapshot) 而不仅仅是 IOptions
.