ASP.NET Core中的配置详解


Posted in Python onFebruary 05, 2021

ASP.NET Core 提供了一个灵活可扩展,基于键值的配置系统. 但是配置系统独立于ASP.NET Core是Microsoft.Extensions 类库的部分. 它可以用于任何类型的应用程序

1、以键-值对的形式读取配置

appsettings.json 文件:

{
  "Position": {
    "Title": "编辑器",
    "Name": "Joe Smith"
  },
  "MyKey": "My appsettings.json Value",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

在ConfigureServices方法里面添加如下测试代码:

var myKeyValue = Configuration["MyKey"];
    var title = Configuration["Position:Title"];
    var name = Configuration["Position:Name"];
    var defaultLogLevel = Configuration["Logging:LogLevel:Default"];

2、多环境配置

使用默认配置,EnvironmentVariablesConfigurationProvider 会在读取 appsettings.json、appsettings.Environment.json 和机密管理器后从环境变量键值对加载配置 。 因此,从环境中读取的键值会替代从 appsettings.json、appsettings.Environment.json 和机密管理器中读取的值 。在 launchSettings.json 中设置的环境变量,在 launchSettings.json 中设置的环境变量将替代在系统环境中设置的变量。

3、读取结构化的配置数据

添加一个类 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}");

如果需要在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"];
  // });

}

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();
  }
}

到此这篇关于ASP.NET Core中的配置详解的文章就介绍到这了,更多相关ASP.NET Core配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
基于进程内通讯的python聊天室实现方法
Jun 28 Python
基于python实现微信模板消息
Dec 21 Python
python 计算两个日期相差多少个月实例代码
May 24 Python
Python3 中文文件读写方法
Jan 23 Python
python opencv之SIFT算法示例
Feb 24 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
解决python 上传图片限制格式问题
Oct 30 Python
Python列表list操作相关知识小结
Jan 29 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Python 爬虫性能相关总结
Aug 03 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
pycharm 的Structure界面设置操作
Feb 05 #Python
Python实现疫情地图可视化
Feb 05 #Python
pycharm 实现调试窗口恢复
Feb 05 #Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 #Python
Pycharm 跳转回之前所在页面的操作
Feb 05 #Python
python自动化办公操作PPT的实现
Feb 05 #Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 #Python
You might like
PHP下MAIL的另一解决方案
2006/10/09 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python的range和linspace使用详解
2019/11/27 Python
Python zip函数打包元素实例解析
2019/12/11 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
python编写实现抽奖器
2020/09/10 Python
python基于win32api实现键盘输入
2020/12/09 Python
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
中学老师的自我评价
2013/11/07 职场文书
请假条格式范文
2014/04/10 职场文书
高中生评语大全
2014/04/25 职场文书
关于诚信的活动方案
2014/08/18 职场文书
罚站检讨书
2015/01/29 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
宣传委员竞选稿
2015/11/19 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
总结Pyinstaller打包的高级用法
2021/06/28 Python
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL