读取配置文件

asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettings>节点。它的数据格式变成了json字符串,便于我们操作和维护。

不管是.net framework还是.net core,在将应用程序发布到生产环境时,所需要的各种配置或多或少都不一样,比如数据库连接字符串,或者redis连接地址,或者接口地址等等。难道我们每次都要在发布后,再次手动更新配置文件吗?明显不可行,那么针对这种问题,我们怎么解决呢?微软给出了具体方案。

那就是在appsettings.json文件的基础上,针对不同的环境添加不同的配置文件。比如用文件appsettings.product.json来存放生产环境需要的配置信息,用appsettings.qa.json来存放测试环境需要的配置信息。然后程序根据环境变量查找对应的appsettings文件。

接下来我会提供详细的步骤和例子演示如何读取appsettings.json配置文件。

1.新增appsettings.Development.json文件。

并将其内容修改为:

红色部分是我添加的测试数据。

2.添加对应实体类

3.修改Startup

构造方法有两个形参,第一个形参configuration,在应用启动时会给初始值。我们就是要修改configuration的值,改变它的运行轨迹。第二个形参env是我后来加上去的,目的是为了获取我们需要的环境变量。

env.ContentRootPath,它的值就是你的web项目(SongLou.Web)所在的目录。我的web项目的目录是:D:\demo\SongLou\SongLou.Web。

AddJsonFile,根据这个方法读取具体的配置文件。env.Environment是最重要的,它的值就是具体的环境变量,由ASPNETCORE_ENVIRONMENT决定,前面已经讲过。

有个需要说明的地方,如果环境变量是开发环境,即ASPNETCORE_ENVIRONMENT的值为Development,在程序读取appsettings. Development.json文件时,如果找不到,它会读取我们在代码中设置的默认文件appsettings.json。如果不指定默认的文件.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true),我们的代码运行后是拿不到任何信息的。如下图:

4.修改ConfigureServices

红色部分就是我们手动加上去的,services.Configure方法会从Startup方法拿到的配置文件(appsettings.Development.json)读取配置信息,并将配置信息赋值给Test类,最终注入到容器里面。

5.Controller注入并测试

首先定义一个只读的私有字段_test,然后通过HomeController构造方法注入代表配置信息的类型Test给_test对象。这样_test对象就存放了我们需要的配置信息。最后我们通过AppSettingsTest方法将配置信息输出。Ioptions<T>泛型的作用我还没研究。

下图就是我们程序运行的结果,可以看到我们拿到了配置信息。

asp.net core配置文件的更多相关文章

  1. ASP.NET Core 配置文件(无处不在的依赖注入)

    前烟: .NET Core 中取消了以往的 XML 节点配置文件,改用了 *.json 格式. 在 Startup.cs 文件中,构造方法 build appsetting.json 文件, 本文主要 ...

  2. ASP.NET Core 配置文件

    在ASP.NET Core 中,应用程序配置数据可以使用JSON, XML 和 INI格式 和内置环境变量,命令行参数或内存中的集合. 1.如何获取和设置配置 ASP.NET Core配置系统针对以前 ...

  3. .NET 黑魔法 - asp.net core 配置文件的"对象存储"

    来,全都是干货. 我们都知道在Framework版本的mvc项目中,配置数据是通过web.config里的appSettings节点配置,我们不得不写一些读取配置文件字符串的类,比如保存在静态的变量中 ...

  4. asp.net core 配置文件动态更新

    IOptions<T> //站点启动后,获取到的值永远不变 IOptionsSnapshot<T> //站点启动后,每次获取到的值都是配置文件里的最新值 (reloadOnCh ...

  5. net core体系-web应用程序-4net core2.0大白话带你入门-6asp.net core配置文件

    asp.net core配置文件   读取配置文件 asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettin ...

  6. 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...

  7. 【无私分享:ASP.NET CORE 项目实战(第六章)】读取配置文件(一) appsettings.json

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在我们之前的Asp.net mvc 开发中,一提到配置文件,我们不由的想到 web.config 和 app.config,在 ...

  8. ASP.NET Core开发-读取配置文件Configuration

    ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...

  9. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

随机推荐

  1. Java入门系列(十)Java IO

    概述 总体而言,java的读写操作又分为两种:字符流和字节流. 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件. 什么是流? ...

  2. java gc

    mark下来 https://plumbr.eu/handbook/what-is-garbage-collection

  3. cell下载图片的思路 --无沙盒(内存)缓冲

    // // ViewController.m // 06-表格图片下载 // // Created by jerry on 15/9/7. // Copyright (c) 2015年 jerry. ...

  4. android 内存泄漏,以及检测方法

    1.为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. 2.内 ...

  5. Shell高级编程学习笔记(基础篇)

    目录 1.shell脚本的执行方法  2.shell的变量类型  3.shell特殊变量 4.变量子串的常用操作  5.批量修改文件名实践   6.变量替换 7.在shell中计算字符串长度的方法  ...

  6. vue学习生命周期(created和mounted区别)

    created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图(例如ajax请求列表). mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom ...

  7. HTML学习笔记05-文本格式化

    HTML格式化标签 HTML使用标签<b>与<i>对输出的文本进行格式,如:粗体or斜体 这些HTML标签称为格式化标签 <!DOCTYPE HTML> <h ...

  8. centos6.5环境基于conga的web图形化界面方式配置rhcs集群

    一.简介 RHCS 即 RedHat Cluster Suite ,中文意思即红帽集群套件.红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用 ...

  9. [How to]HBase集群备份方法--Replication机制

    1.简介 HBase备份的方法在[How to]HBase集群备份方法文章中已经有些介绍,但是这些方法都不是HBase本身的特性在支持,都是通过MR计算框架结合HBase客户端的方式,或者直接拷贝HB ...

  10. WebMvcConfigurerAdapter已过时

    Spring Boot2.0的版本(创建的时候自动选择的这个版本),然后编译器告诉我WebMvcConfigurerAdapter已过时了 @Deprecated public abstract cl ...