ASP.NET Core配置框架已内建支持 JSON、XML 和 INI 配置文件,内存配置(直接通过代码设置值),环境变量配置等方式配置参数。

本文主要和大家讲一下我们在项目中常用的以配置文件的方式进行配置。本文以.NetCore2.2为例

配置文件包含了如下几种常用方式。

1.使用ASP.NET Core框架自带的IConfiguration应用程序配置,通过构造函数的方式注入并使用选择模式使用配置参数:Configuration[参数名称]

2.使用选项IOptions和配置对象方式

当你创建了一个Web API应用程序的时候,ASP.NET Core框架会默认为你提供一个配置文件:appsettings.json,并且框架默认指向了该配置文件;但是当你创建例如控制台应用程序的时候,可能就需要我们手动添加配置文件,并手动指向该配置文件。

指定项目配置文件方式:

在项目的Program文件中,添加ConfigureAppConfiguration中的代码:

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostcontext, config) =>
{
//获取项目环境
var env = hostcontext.HostingEnvironment;
config.SetBasePath(env.ContentRootPath);
//指定项目配置文件 属性reloadOnChange表示配置文件发生变化的时候,项目自动重新加载。
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
})
.UseStartup<Startup>();

对于指定多配置环境的项目(主要有开发环境Development和生产环境Production),可使用如下方式:

  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostcontext, config) =>
{
//获取项目环境
var env = hostcontext.HostingEnvironment;
config.SetBasePath(env.ContentRootPath);
//指定项目配置文件 属性reloadOnChange表示配置文件发生变化的时候,项目自动重新加载。
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
//指定项目不同环境下使用哪个配置文件(env.EnvironmentName主要有开发环境Development和生成环境Production),对于指定环境的配置文件非常有用
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
//启用多环境配置
config.AddEnvironmentVariables();
})
.UseStartup<Startup>();

指定配置文件之后,我们便可以具体使用配置参数:

针对如下配置文件appsettings.json:获取WebOptions—Name节点值

{
 "WebOptions": {
"Name": "Production"
},
  "Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}

方式一,通过构造函数的方式注入IConfiguration配置接口,并使用

        public class Test : ITest
{
private readonly IConfiguration configuration;
//构造函数方式注入
public Test(IConfiguration _configuration)
{
configuration = _configuration;
}
public Task<string> Get()
{
//以选择模式的方式获取配置参数
var name = configuration["WebOptions:Name"];
//返回
return Task.FromResult(name);
}
}

方式二·:使用选项IOptions和配置对象方式

首先,添加配置文件对应的实体类。这里的类名,属性名要对应配置文件参数名称。

    public class WebOptions
{
public string Name { get; set; }
}

然后,在Start文件ConfigureServices类中,注册与Option绑定的配置实例。

         public void ConfigureServices(IServiceCollection services)
{
//注册WebOptions配置实例
services.Configure<WebOptions>(Configuration.GetSection(nameof(WebOptions)));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

最后,通过构造函数注入Options绑定配置,并使用。

     public class Test : ITest
{
private readonly WebOptions webOptions; /// <summary>
/// 构造函数注入
/// </summary>
/// <param name="_webOptions"></param>
public Test(IOptions<WebOptions> _webOptions)
{
webOptions = _webOptions.Value;
} public Task<string> Get()
{
//以对象的方式获取参数值
var name = webOptions.Name;
return Task.FromResult(name);
}
}

好了,关于ASP.NET Core中常用的配置文件参数配置方式就介绍到这里。

 

最新文章

  1. 补发:用Meal Prep+模块化饮食来减肥之实操
  2. 创建WP8试用应用
  3. UI第十二节
  4. C# : CEF操作
  5. Mysql修改日期,时间不变的做法
  6. Jquery plupload上传笔记(修改版)
  7. 什么是CPA, CPS, CPT?
  8. 基于WDF的PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)
  9. Java知识点:琐碎知识点(1)
  10. 3.4 spring- lookup-method 子元素的使用与解析
  11. bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
  12. [Python笔记]第八篇:模块
  13. SRM468 - SRM469(1-250pt, 500pt)
  14. (C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标?
  15. 得到JAVA项目根文件夹
  16. HDU Today
  17. MySQL 存储过程的简单使用
  18. MariaDB安装及基本配置
  19. 多表联合Update更新数据
  20. Linux学习笔记01—安装LInux系统

热门文章

  1. Codeforce 322E Ciel the Commander (点分治)
  2. python3yupython2的差别
  3. LeetCode 45. 跳跃游戏 II | Python
  4. socket编程之并发回射服务器2
  5. Flutter 首页必用组件NestedScrollView
  6. C. Two Arrays(思维DP或组合数学)
  7. VM虚拟机手动配置IP地址
  8. sprign mvc 解决中文乱码问题
  9. CSS的基本语法及页面引用
  10. Spring Cloud Alibaba系列(三)使用feign进行服务调用