.net core Configuration对象

主要通过三种使用情况来介绍
Web应用程序使用
控制台应用程序使用
库类使用
需要注意的点,假如我同时配置多个配置文件,程序使用的是最后加载的配置文件

Web应用程序使用
首先简述一下web主机创建配置对象的过程

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostContext, confBuilder) =>
{
var env = hostContext.HostingEnvironment;
confBuilder.AddJsonFile(path: “appSettings.json”, optional: true, reloadOnChange: true);
confBuilder.AddJsonFile(path: $“appSettings.{env.EnvironmentName}.json”,optional:true,reloadOnChange:true);
confBuilder.AddJsonFile(path: “importsettings.json”, optional: true, reloadOnChange: true);
confBuilder.AddEnvironmentVariables();
confBuilder.AddCommandLine(args);
confBuilder.AddUserSecrets();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
});
}

ConfigureAppConfiguration((hostContext, confBuilder)

在这句话中,告诉程序需要使用的主机上下文和配置生成器,这个是一个基本的构建起,可以对其进行修改,直至完成CreateHostBuilder为止

var env = hostContext.HostingEnvironment;

获取当前程序的运行环境,比如dev,test,product环境,可以供我们使用不同的配置文件

confBuilder.AddJsonFile(path: “appSettings.json”, optional: true, reloadOnChange: true);
confBuilder.AddJsonFile(path: $“appSettings.{env.EnvironmentName}.json”,optional:true,reloadOnChange:true);
confBuilder.AddJsonFile(path: “importsettings.json”, optional: true, reloadOnChange: true);

这里其实就是指配置几个不同的配置文件

confBuilder.AddEnvironmentVariables();
confBuilder.AddCommandLine(args);

这两行则是大多数应用程序通用的(当然不需要也不影响我们程序的使用)

confBuilder.AddUserSecrets();

这句话其实是一种安全配置,可以通过配置对象访问Azure的加密存储的用户机密对象的安全存储,第二个是因为启用了Azure,可以安全的访问云配置,Secrets子系统可以在本地运行,也可以基于云运行
Web应用程序其他一些重要功能,比如依赖注入则是在StartUp.cs文件中体现(当然,如果想,startUp文件也不是必要的)

控制台应用程序/类库

static void Main(string[] args)
{
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true)
.AddJsonFile(“importsettings.json”, optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.AddCommandLine(args)
.Build();
}

public StarChartDataHandler() : this(new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true)
.AddJsonFile(“importsettings.json”, optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build())
{ }
public StarChartDataHandler(IConfiguration config)
{
if (config == null)
{
config = new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true
.AddJsonFile(“importsettings.json”, optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
}
_configuration = config;
ConfigurationSection userSettings = _configuration.GetSection(“userSettings”) as ConfigurationSection;
var defaultStarChartFile = userSettings[“DefaultStarChartFile”];
var starChartFile = userSettings[“StarChartFile”];
var defaultStarChartSchema = userSettings[“DefaultStarChartSchema”];
var starChartSchema = userSettings[“StarChartSchema”];
var starChartDirectory = userSettings[“Directory”];
List fileList = userSettings.GetSection(“StarChartFileList”).Get<List>();

}
Absorbing material: www.goodsmaterial.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值