本地配置参数
本地参数包含以下形式
- 环境变量(系统级/用户级/进程级)
- 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>();