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实现从脚本里运行scrapy的方法
Apr 07 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
代码详解django中数据库设置
Jan 28 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
python中加背景音乐如何操作
Jul 19 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
pytorch 如何使用float64训练
May 24 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
CodeIgniter CLI模式简介
2014/06/17 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Vue 实现登录界面验证码功能
2020/01/03 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
应届毕业生的自我鉴定
2013/11/13 职场文书
医疗纠纷协议书
2014/04/16 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
先进个人总结范文
2015/02/15 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
消费者投诉书范文
2015/07/02 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
Python实现双向链表
2022/05/25 Python