ASP.NET Core 中的配置
.NET Core 定义配置的方式不同于之前 NET 版本,之前是依赖于 System.Configuration 的 app.config 和 XML 配置文件 web.config。 新的配置系统更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用文件格式(INI、JSON 或 XML),也可以使用内存的变量作为配置的数据源,或直接配置定义在持久化的文件甚至数据库中。
以键-值对的形式读取配置
新建一个 ASP .NET Core Web 应用程序,修改appsettings.json为:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"option1": "value1_from_json",
"option2": 2,
"subsection": {
"suboption1": "subvalue1_from_json",
"suboption2": "subvalue2_from_json"
},
"wizards": [
{
"Name": "Gandalf",
"Age": "1000"
},
{
"Name": "Harry",
"Age": "17"
}
],
"EnvConfig": "Production"
}
在ConfigureServices方法里面添加如下测试代码:
//直接访问,节点由冒号(:)分隔
var option1 = Configuration["option1"];
var suboption1 = Configuration["subsection:suboption1"];
var wizards_0 = Configuration["wizards:0:Name"];
Console.WriteLine($"option1: {option1}");
Console.WriteLine($"subsection:suboption1: {suboption1}");
Console.WriteLine($"wizards:0:Name: {wizards_0}");
查看输出:
TestConfigration> option1: value1_from_json
TestConfigration> subsection:suboption1: subvalue1_from_json
TestConfigration> wizards:0:Name: Gandalf
多环境配置
修改更改appsettings.Development.json为:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"EnvConfig": "Development"
}
注意EnvConfig的配置值为Development。
在ConfigureServices方法里面添加如下测试代码:
//多环境配置
var envConfig = Configuration["EnvConfig"];
Console.WriteLine($"EnvConfig: {envConfig}");
Debug执行获取的是appsettings.Development.json里面的值,输出
EnvConfig: Development
直接执行获取的是appsettings.json里面的值,输出
EnvConfig: Production
多坏境配置文件获取代码位于Program类中的WebHost.CreateDefaultBuilder方法里:
IHostingEnvironment hostingEnvironment = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
读取结构化的配置数据
添加一个类 TestSubSectionConfig 对应于配置文件中的 subsection 节点
public class TestSubSectionConfig
{
public string SubOption1 { get; set; }
public string SubOption2 { get; set; }
}
在ConfigureServices方法里面添加如下测试代码:
//使用GetSection解析配置文件的节
var subsectionOptions = Configuration.GetSection("subsection").Get<TestSubSectionConfig>();
var suboption2 = subsectionOptions.SubOption2;
Console.WriteLine($"subsection:suboption2: {suboption2}");
查看输出:
subsection:suboption2: subvalue2_from_json
如果需要在Controller里面使用,可以通过依赖注入的方式:
在ConfigureServices里面注册配置项。
public void ConfigureServices(IServiceCollection services)
{
//注册配置到服务容器
services.Configure<TestSubSectionConfig>(Configuration.GetSection("subsection"));
//var subsectionOptions = Configuration.GetSection("subsection").Get<TestSubSectionConfig>();
//services.Configure<TestSubSectionConfig>(options =>
//{
// options.SubOption1 = subsectionOptions["suboption1"];
// options.SubOption2 = subsectionOptions["suboption2"];
// });
}
在Controller里面读取:
public class HomeController : Controller
{
private TestSubSectionConfig _subSectionConfig;
private ILogger<HomeController> _logger;
public HomeController(IOptions<TestSubSectionConfig> option, ILogger<HomeController> logger)
{
_subSectionConfig = option.Value;
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation($"SubOption1: {_subSectionConfig.SubOption1}");
_logger.LogInformation($"SubOption2: {_subSectionConfig.SubOption2}");
return View();
}
}
查看输出:
TestConfigration.Controllers.HomeController:Information: SubOption1: subvalue1_from_json
TestConfigration.Controllers.HomeController:Information: SubOption2: subvalue2_from_json
参考
ASP.NET Core 中的配置的更多相关文章
- (11)ASP.NET Core 中的配置一(Configuration)
1.前言 ASP.NET Core在应用程序上引入Microsoft.Extensions.Configuration配置,可以支持多种方式配置,包括命令行配置.环境变量配置.文件配置.内存配置,自定 ...
- (12)ASP.NET Core 中的配置二(Configuration)
1.内存配置 MemoryConfigurationProvider使用内存中集合作为配置键值对.若要激活内存中集合配置,请在ConfigurationBuilder的实例上调用AddInMemory ...
- 聊聊ASP.NET Core中的配置
作为软件开发人员,我们当然喜欢一些可配置选项,尤其是当它允许我们改变应用程序的行为而无需修改或编译我们的应用程序时.无论你是使用新的还是旧的.NET时,可能希望利用json文件的配置.在这篇文章中, ...
- 3、带你一步一步学习ASP.NET Core中的配置之Configuration
如果你是刚接触ASP.NET Core的学习的话,你会注意到:在ASP.NET Core项目中,看不到.NET Fraemwork时代中的web.config文件和app.config文件了.那么你肯 ...
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- ASP.NET Core中的配置
配置 参考文件点击跳转 配置来源 命令行参数 自定义提供程序 目录文件 环境变量 内存中的.NET 对象 文件 默认配置 CreateDefaultBuilder方法提供有默认配置,在这个方法中会接收 ...
- ASP.NET Core开发-如何配置Kestrel 网址Urls
ASP.NET Core中如何配置Kestrel Urls呢,大家可能都知道使用UseUrls() 方法来配置. 今天给介绍全面的ASP.NET Core 配置 Urls,使用多种方式配置Urls. ...
- ASP.NET Core中如何调整HTTP请求大小的几种方式
一.前言 一般的情况下,我们都无需调用HTTP请求的大小,只有在上传一些大文件,或者使用HTTP协议写入较大的值时(如调用WebService)才可能会调用HTTP最大请求值. 在ASP.NET Co ...
- asp.net core 系列 10 配置configuration (上)
一. ASP.NET Core 中的配置概述 ASP.NET Core 中的应用配置是基于键值对,由configuration 程序提供. configuration 将从各种配置源提供程序操作键 ...
随机推荐
- Centos7 Minni 安装 执行ifconfig命令出现 -bash ifconfig command not found 的解决方法
1) have a root privilege shell or be on the sudo list. 2a) At a root shell prompt (#) yum install ne ...
- 关于createTextRange和createRange的一些用法【转】
一.返回createTextRange的text和htmlText <mce:script language="javascript"><!--function ...
- Linux 下 Memcached 缓存服务器安装配置
Linux 下 Memcached 缓存服务器安装配置 [日期:2011-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] [安装Memcache服务器端]我目前的平台 ...
- 【转】【java源码分析】Map中的hash算法分析
全网把Map中的hash()分析的最透彻的文章,别无二家. 2018年05月09日 09:08:08 阅读数:957 你知道HashMap中hash方法的具体实现吗?你知道HashTable.Conc ...
- 用TIdIPWatch获取本地IP
Indy的“indy misc”下有一个“TIdIPWatch”组件,可以正确获得本地IP,即使有多块网卡,也可以正确获得真正本地IP. 一,引入单元文件“IdIPWatch”. 二,实际代码: pr ...
- robot framework踩坑记录
一.报错:FAIL : 'Return' is a reserved keyword. 给Retrun加上中括号即可 二.报错:True != true 三.报错 /Library/Python/2. ...
- Leetcode 102 二叉树的层次遍历 Python
二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 ...
- day00 -----博客作业1
问题1.使用while循环输入 1 2 3 4 5 6 8 9 10 i = 0 while i<10: i+=1 if i ==7: continue print(i) 问题2 求1- ...
- python有哪些比较隐藏的知识点?
一.复用小整数以及小字符串 在Python语言中,设计者在优化Python语言时,为了提高Python的运行效率,所以就将一些小整数保存在系统表,没有释放回收(正常情况下,当Python中一个对象没有 ...
- Python的垃圾回收机制以及引用计数
Python中的计数引用 在Python中,由于Python一门动态的语言,内部采用的指针形式对数据进行标记的,并不像c/c++那样,通过指定的数据类型并分配相应的数据空间,Python中定义的变量名 ...