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中操作MySQL入门实例
Feb 08 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
在Python中定义一个常量的方法
Nov 10 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
python+rsync精确同步指定格式文件
Aug 29 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
Python __slots__的使用方法
Nov 15 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
php生成shtml类用法实例
2014/12/09 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
原生js开发的日历插件
2017/02/04 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python中单、双下划线的区别总结
2017/12/01 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
shell的种类有哪些
2015/04/15 面试题
生产车间实习自我鉴定
2013/09/23 职场文书
装饰活动策划方案
2014/02/11 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
单位在职证明书
2014/09/11 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年体育部工作总结
2015/04/02 职场文书
通知函的格式
2015/04/27 职场文书
员工担保书范本
2015/09/22 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书