asp.net core配置文件

 

读取配置文件

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>泛型的作用我还没研究。

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

net core体系-web应用程序-4net core2.0大白话带你入门-6asp.net core配置文件的更多相关文章

  1. net core体系-web应用程序-4net core2.0大白话带你入门-2asp.net core新建项目

    新建asp.net core项目   开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建 ...

  2. net core体系-web应用程序-4net core2.0大白话带你入门-7asp.net core日志组件(Logger和Nlog)

    asp.net core日志组件   日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置 ...

  3. net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解

    asp.net core环境变量详解   环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...

  4. net core体系-web应用程序-4net core2.0大白话带你入门-4asp.net core配置项目访问地址

    asp.net core配置访问地址  .net core web程序,默认使用kestrel作为web服务器. 配置Kestrel Urls有四种方式,我这里只介绍一种.其它方式可自行百度. 在Pr ...

  5. net core体系-web应用程序-4net core2.0大白话带你入门-3asp.net core项目架构和配置文件解读

    asp.net core web项目目录解读   Connected Services 和传统.net web项目相比,它的功能类似于添加webservice或者wcf service的引用.暂时用不 ...

  6. net core体系-web应用程序-4net core2.0大白话带你入门-11asp.net core 2.0 cookie的使用

    asp.net core 2.0 cookie的使用   本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所 ...

  7. net core体系-web应用程序-4net core2.0大白话带你入门-10asp.net core session的使用

    asp.net core session的使用   Session介绍 本文假设读者已经了解Session的概念和作用,并且在传统的.net framework平台上使用过. Asp.net core ...

  8. net core体系-web应用程序-4net core2.0大白话带你入门-9asp.net core服务的生命周期

    asp.net core服务的生命周期   Transient:每一次GetService都会创建一个新的实例 Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request ...

  9. net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解

    asp.net core 内置DI容器的一点小理解   DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...

随机推荐

  1. 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库

    通过python操作GeoLite2-City.mmdb库将nginx日志写入数据库 # 创建存放nginx日志的表accesslog2 CREATE TABLE `accesslog2` ( `id ...

  2. 查看当前APP打开的是哪个Activity

    按下 “window键+R键” 打开电脑的 “运行” 窗口,输入“cmd”,进入你的adb.exe所在的目录,输入 “ adb shell "dumpsys window | grep mC ...

  3. 时间格式化 Date-formatDate

    //日期格式化 export function formatDate(date,fmt){ var o = { "M+":date.getMonth() + 1,//月份 &quo ...

  4. js 对象的循环

    var car = {type:"Fiat", model:500, color:"white"}; var arr = array(); for(i in c ...

  5. pod 使用详解

    cd 进去到 项目目录 包含 xcodeproj 结尾的目录下 1 pod init 创建一个pod 文件 2 打开生产的pod 文件 然后 配置pod 文件 并保存  3 pod install 安 ...

  6. Android UiAutomator2.0

    一.环境搭建 JDK(java环境).SDK(adb appt环境),这两个已经不想再叙述了直接看详见--> android studio 安装,下载地址:https://developer.a ...

  7. hdu6273 线性差分

    #include<bits/stdc++.h> using namespace std; typedef long long LL; ; ; LL a[maxn],b[maxn]; LL ...

  8. cf1144G 将串分解成单调递增和递减子串(贪心)

    这算哪门子dp.. 具体做法就是贪心,建立两个vector存递增序列递减序列,操作过程中a可以合法地匀一个给b 就是判断第i个数放在递增序列里还是放在递减序列里,需要根据后面的数来进行决策 #incl ...

  9. Nginx详解三:Nginx基础篇之yum安装

    Nginx快速搭建 Mainline version ----开发版:具有最新功能的版本,用于测试.研究.学习,不用于企业生成环境 Stable version----稳定版:官方认可,且通过测试的 ...

  10. JS实现继承的几种方式(转)

    转自:幻天芒的博客 前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如 ...