读取配置文件

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. 010、base镜像 (2018-12-27 周四)

    参考https://www.cnblogs.com/CloudMan6/p/6799197.html   什么是base镜像       不依赖其他镜像,从scratch构建.或者是其他可以作为基础镜 ...

  2. Table Dragger - 简单的 JS 拖放排序表格插件

    Table Dragger 是一个极简的实现拖放排序的表格插件,纯 JavaScript 库,不依赖 jQuery.用于构建操作方便的拖放排序功能,超级容易设置,有平滑的动画,支持触摸事件. 在线演示 ...

  3. linux系统--用户和用户组

    一.用户和用户组的概念 用户:使用操作系统的人 用户组:具有相同系统权限的一组用户.在linux系统中可以存在多个用户组 1.1 /etc/group 这里存储当前系统中所有用户组的信息 每一行对应一 ...

  4. jzoj4313 电话线铺设(最小生成树+最近公共祖先)

    题面 \(solution:\) 这道题很奇妙,需要对kruskal重构树有足够的了解!我们先对王牌电缆实行kruskal重构树,然后我们再来枚举每一条李牌电缆,我们将某一条李牌电缆加进这棵树中必然构 ...

  5. R 的农场 chebnear (二分答案+最近平面点对)

    题面 \(solution:\) 这道题想到二分答案应该是不难的,因为题目是求平均工资的最小值,这个显然具备单调性: 我们设平均工资的最小值为ans,如果我们现在的平均工资x小于ans那么将x带入题目 ...

  6. HTTP状态码解析

    HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.R ...

  7. cetus系列~ 继续分析

    一 简介:我们来继续探讨cetus的细节问题 二 命令 1 select help 查看帮助  2 select * from backends 查看后端列表  3 select conn_detai ...

  8. 课程5:Spring框架2016版视频--视频列表目录

    \day01视频\01-今天内容介绍.avi; \day01视频\02-spring的相关概念.avi; \day01视频\03-spring的ioc底层原理(一).avi; \day01视频\04- ...

  9. 【Mysql sql inject】【入门篇】sqli-labs使用 part 4【18-20】

    这几关的注入点产生位置大多在HTTP头位置处 常见的HTTP注入点产生位置为[Referer].[X-Forwarded-For].[Cookie].[X-Real-IP].[Accept-Langu ...

  10. windows下设置计划任务自动执行PHP脚本

    背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...