dotnetcore / AgileConfig

基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server
MIT License
1.46k stars 296 forks source link

配置项的优先级 #175

Closed hellosnowy closed 2 months ago

hellosnowy commented 2 months ago

有两个客户端项目的建议 1、现在私有应用的配置项可以覆盖公共应用的配置项,能否增加本地appsettings的配置也能覆盖配置中心的配置?

2、在已经使用builder.Host.UseAgileConfig();的前提下,如果配置文件没有AgileConfig节点,能否优先走微软appsettings.json中配置

以上2个建议都是为了多人联合开发基于AgileConfig的微服务项目,但服务端4个环境远远不够支撑的情况下便于开发调试

kklldog commented 2 months ago

hi, 你要用 appsettings.json 的配置覆盖 agileconfig 的其实只要拿到 IConfigurationBuilder 调用 .AddJsonFile() 把 appsetting.json 再次加进去就好了,因为最后一个会覆盖前面的。 4个环境变量那个是可以改的,自己去数据库里setting表改一下就好了。

hellosnowy commented 2 months ago

感谢回复。 调用.AddJsonFile()需要修改源码才能实现,我想采用一种无侵入的解决方案,通过修改配置就能实现。也就是优先级的问题

kklldog commented 2 months ago

这总是要改代码的。 最简单的就是这样:

builder.Host.UseAgileConfig();
builder.Host.ConfigureHostConfiguration(b =>
{
    b.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
});

紧接着UseAgileConfig后面加上这个,更多的控制代码得根据你自己的业务来实现。

这些代码放到 AgileConfig 里就不太合适。因为 AgileConfig 只是一个 configuration provider。它跟 JsonFile Configuration Provider 其实是同级的东西。真正管理配置的在 asp.net core 里面是 configurationmanager 。

hellosnowy commented 2 months ago

好的,感谢!