背景:
在使用Avalonia开发的过程中需要使用Http请求Api,把Api的BaseUrl appKey等信息写在了代码中,当Api提供发生变化时,需要重新打包客户端程序,于是想着把此部分信息从代码中剥离出来。
需求:
- 请求服务端的连接信息在配置文件中配置,比如BaseUrl appKey等信息;
- 程序启动时如果读取配置信息错误则自动退出。
解决方案:
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
-
- 添加以上依赖包;
- 添加配置文件appsettings.json文件;
- 在app.axaml.cs中添加读取配置和程序退出逻辑;
关键代码:
public class App : Application
{public override void Initialize(){AvaloniaXamlLoader.Load(this);try{// 创建配置构建器var configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appSettings.json", optional: false, reloadOnChange: true).Build();// 读取服务端接口配置var httpServiceConfig = configuration.GetSection("HttpService");BaseUrl = httpServiceConfig.GetSection("BaseUrl").Value;ClientId = httpServiceConfig.GetSection("ClientId").Value;if (BaseUrl == null || ClientId == null || BaseUrl == "" || ClientId == ""){Log.Error("服务端接口配置为空,请检查appsettings.json文件");Environment.Exit(5);}
}
catch (Exception ex)
{Log.Error("配置文件读取异常 {Message} ,请检查appsettings.json文件", ex.Message);Environment.Exit(5);
}}
}
appsettings.json文件内容:
深潜:
- Environment.Exit(5); 5代表配置文件错误。0代表正常 1代表错误,是.Net中的通常约定;
- 同样可以把其他的配置拿出来,比如Log的相关配置;
本文完。