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实现的多线程端口扫描工具分享
Jan 21 Python
在Python中使用列表生成式的教程
Apr 27 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python中实现精确的浮点数运算详解
Nov 02 Python
python随机数分布random测试
Aug 27 Python
python dict 相同key 合并value的实例
Jan 21 Python
python把1变成01的步骤总结
Feb 27 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
Python values()与itervalues()的用法详解
Nov 27 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 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 $_FILES函数详解
2011/03/09 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python 排序算法总结及实例详解
2016/09/28 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
python dumps和loads区别详解
2020/02/04 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
学生会干部自荐信
2014/02/04 职场文书
工作说明书范文
2014/05/07 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
2015年技术员工作总结
2015/04/10 职场文书
感恩教育主题班会
2015/08/12 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
理解python中装饰器的作用
2021/07/21 Python