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实现模拟按键,自动翻页看u17漫画
Mar 17 Python
简单理解Python中的装饰器
Jul 31 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
你真的了解Python的random模块吗?
Dec 12 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 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中的MVC模式运用技巧
2007/05/03 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
Yii2如何批量添加数据
2016/05/17 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python常规方法实现数组的全排列
2015/03/17 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python sorted方法和列表使用解析
2019/11/18 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
Python使用xpath实现图片爬取
2020/09/16 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
应付会计岗位职责
2013/12/12 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
个人先进事迹材料
2014/12/29 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
Python sklearn分类决策树方法详解
2022/09/23 Python