Если вы используете интерфейс IOptions<T>
, свойство Value
всегда будет возвращать одно и то же значение, установленное во время конфигурации.Чтобы получать обновленные значения каждый раз, когда файл был изменен, вы должны ввести интерфейс IOptionsMonitor<T>
или IOptionsSnapshot<T>
.
Startup.cs
services.Configure<SomeOptions>(Configuration.GetSection("ConfigSection"));
TestController.cs (с IOptions
)
public class TestController : Controller
{
private readonly IOptions<SomeOptions> _options;
public TestController(IOptions<SomeOptions> options)
{
_options = options;
}
[HttpGet]
public async Task<IActionResult> GetConfig()
{
return Json(_options.Value); //returns same value every time
}
}
TestController.cs (с IOptionsMonitor
)
public class TestController : Controller
{
private readonly IOptionsMonitor<SomeOptions> _options;
public TestController(IOptionsMonitor<SomeOptions> options)
{
_options = options;
}
[HttpGet]
public async Task<IActionResult> GetConfig()
{
return Json(_options.CurrentValue); //returns recalculated value
}
}