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中使用序列的方法
Aug 03 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 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
ecshop实现smtp发送邮件
2015/02/03 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python进行参数传递的方法
2020/05/12 Python
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
教师自我鉴定范文
2013/11/10 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
租房协议书范本
2014/04/09 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
庆元旦演讲稿
2014/09/15 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
休假证明书
2015/06/24 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis