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 logging模块学习笔记
May 24 Python
python实现备份目录的方法
Aug 03 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
Python Socket传输文件示例
Jan 16 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python编写Windows Service服务程序
Jan 04 Python
python得到单词模式的示例
Oct 15 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
python十进制转二进制的详解
Feb 07 Python
在python image 中实现安装中文字体
May 16 Python
使用 django orm 写 exists 条件过滤实例
May 20 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 include的妙用,实现路径加密
2008/07/29 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
分享php多功能图片处理类
2016/05/15 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Python修改MP3文件的方法
2015/06/15 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
如何用Python徒手写线性回归
2021/01/25 Python
表达自我的市场:Society6
2018/08/01 全球购物
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
交通安全教育主题班会
2015/08/12 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
TV动画《间谍过家家》公开PV
2022/03/20 日漫
如何Python使用re模块实现okenizer
2022/04/30 Python