我正在尝试在不重新启动应用程序的情况下更改 ocelot 配置,并且我不想使用 Consul。试图寻找简单的解决方案。我正在尝试什么。
注册的配置文件为reloadOnChange:true
public Startup(IHostingEnvironment env)
{
var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();
builder.SetBasePath(env.ContentRootPath)
.AddJsonFile("configuration.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
并将配置添加为单例
services.AddSingleton<IConfiguration>(Configuration);
还编写了服务,它使我能够使用服务更改此单例配置。
[Route("api/[controller]")]
public class XBConfigurationController : Controller
{
public XBConfigurationController(IConfiguration configuration)
{
_configuration = configuration as IConfigurationRoot;
}
private readonly IConfigurationRoot _configuration;
// GET: /<controller>/
[HttpGet]
public IActionResult Get()
{
_configuration.Reload();
return Ok();
}
}
怎么了?为什么 ocelot 不刷新它的内部配置?