本地配置参数

本地参数包含以下形式

  • 环境变量(系统级/用户级/进程级)
  • AppConfig(ClownFish.App.config)

查找优先级:

  • 环境变量
  • AppConfig



环境变量

docker run -d  --name xxxx  -p 8208:80 -m500m  \
  -e ASPNETCORE_ENVIRONMENT=TEST \
  -e XyzName=abc \
  -v /etc/hosts:/etc/hosts \
   nebula/venus:latest 

上例定义了2个环境变量:

  • ASPNETCORE_ENVIRONMENT
  • XyzName

获取配置参数

string value = LocalSettings.GetSetting("XyzName");



ClownFish.App.config 配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>

        <add key="configServiceUrl" value="http://LinuxTest:8503" />
        
    </appSettings>
    
</configuration>

获取配置参数

string value = LocalSettings.GetSetting("configServiceUrl");



对象化参数值

通常我们说的配置参数是 name = value 这种形式,二边都是字符串。

然而有些场景下,value可能会是一个对象。
例如:以下数据类型,它包含3个成员

public sealed class XxxConfig
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Key { get; set; }
}

这个时候如果强行把它拆分成3个参数就很不方便了,此时可以将 value部分 写成以下形式:

Id=1111111111;Name=222222222;Key=xxxxxxxxxx

然后可以这样获取:

XxxConfig config = LocalSettings.GetSetting<XxxConfig>("参数名称");

小结:

  • 包含多个子项参数,可以将value写成 a=b;c=d 格式
  • 本小节介绍的参数值写法对于配置服务也是支持的

注意:

  • 如果参数的子项值包含 = ; 这2个特殊字符,可以将value写成 JSON格式
  • 如果参数对象是一个多层级的,建议使用【独立配置文件】




自定义配置文件

如果配置参数比较复杂,可以采用XML或者JSON文件方式存储, 使用时反序列化读取。

例如:

string filePath = Path.Combine(AppContext.BaseDirectory, "XxxConfig.xml");
var config = XmlHelper.XmlDeserializeFromFile<T>(filePath);

或者

string filePath = Path.Combine(AppContext.BaseDirectory, "XxxConfig.json");
var config = File.ReadAllText(filePath).FromJson<T>();