我们以前在Asp.Net MVC中使用 System.Configuration.ConfigurationManager 来读取web.config文件。但是Asp.Net Core MVC已经没有web.config文件了,它的配置信息一般写在appsettings.json当中,那么我们怎么读取该文件呢?

  在Asp.Net Core MVC中使用 Microsoft.Extensions.Options.ConfigurationExtensions 包来读取appsettings.json。具体的操作如下:

  使用NuGet添加  Microsoft.Extensions.Options.ConfigurationExtensions  包到我们的项目当中,然后在appsettings.json中添加我们自己的一些配置信息

{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"OpenAuthDBContext": "Data Source=localhost;Initial Catalog=dbname;User=sa;Password=123"
},
"AppSetting": {
"SSOPassport": "http://localhost:52789",
"Version": "1.0", //如果为demo,则屏蔽Post请求
"DbType": "SqlServer", //数据库类型:SqlServer/MySql
"MessageUrl": "http://localhot:23124", //短信平台接口
"MessageType": "CAD71325-0097-4052-9183-56F04EED0B31" //短信类型ID
}
}

  然后我们新建一个文件AppSetting

    /// <summary>
/// 配置项
/// </summary>
public class AppSetting
{ public AppSetting()
{
SSOPassport = "http://localhost:52789";
Version = "";
DbType = Define.DBTYPE_SQLSERVER;
}
/// <summary>
/// SSO地址
/// </summary>
public string SSOPassport { get; set; } /// <summary>
/// 版本信息
/// 如果为demo,则屏蔽Post请求
/// </summary>
public string Version { get; set; } /// <summary>
/// 数据库类型 SqlServer、MySql
/// </summary>
public string DbType { get; set; } /// <summary>
/// 短信平台接口Url
/// </summary>
public string MessageUrl { get; set; } /// <summary>
/// 短信类型
/// </summary>
public string MessageType { get; set; }
}

  接着在Startup.cs文件的ConfigureServices方法中添加

services.AddOptions();
//映射配置文件
services.Configure<AppSetting>(Configuration.GetSection("AppSetting"));

  最后就可以在我们的Controller中使用了,通过IOption<AppSetting>来读取。

private readonly IOptions<AppSetting> _setting;

public LoginController(IAuth authUtil,IOptions<AppSetting> setting)
{
_authUtil = authUtil;
_setting = setting;
} public string GetCaptcha(string phone)
{
string messageUrl = _setting.Value.MessageUrl;
string messageType = _setting.Value.MessageType; if (_authUtil.GetCaptcha(phone, messageUrl, messageType))
{
return JsonHelper.Instance.Serialize(new { Code = , Message = "" });
}
return JsonHelper.Instance.Serialize(new { Code = , Message = "验证码获取失败,请稍后重试!" });
}

  需要注意的是,通过IOption的方式不能在Startup.cs中读取appsettings.json文件,在Startup.cs中读取appsettings.json文件需要使用Microsoft.Extensions.Configuration的IConfiguration。

var dbType = ((ConfigurationSection) Configuration.GetSection("AppSetting:DbType")).Value;

或者使用

var v = Configuration["ASPNETCORE_ENVIRONMENT"];
var d = Configuration["AppSetting:MessageUrl"];

针对格式为下面的json,我么可以通过索引来获取

{
"Message": {
"Message1": {
"Name": ""
},
"Message2": {
"Name": ""
}
}
}
_configuration["Message:0:Name"]

Asp.Net Core 进阶(一) —— 读取appsettings.json的更多相关文章

  1. .NET Core 类库中读取appsettings.json

    { "Logging": { "IncludeScopes": false, "LogLevel": { "Default&quo ...

  2. .net core 中如何读取 appsettings.json 相关配置

    appsettings.json如下 { "Logging": { "LogLevel": { "Default": "Debug ...

  3. asp.net core 读取appsettings.json配置项

    1.新建一个asp.net core 项目 2.打开appsettings.json,加入配置项 { "Logging": { "IncludeScopes": ...

  4. ASP.NET Core 注入和获取 AppSettings 配置

    ASP.NET Core 项目中有个appsettings.json配置文件,用于存放一些配置信息,比如数据库连接字符串等,但访问的话,只能在 ASP.NET Core 项目中获取,如果我们在其他项目 ...

  5. Asp .Net Core 读取appsettings.json配置文件

         Asp .Net Core 如何读取appsettings.json配置文件?最近也有学习到如何读取配置文件的,主要是通过 IConfiguration,以及在Program中初始化完成的. ...

  6. asp.net core读取appsettings.json,如何读取多环境开发配置

    摘要 在读取appsettings.json文件中配置的时候,觉得最简单的方式就是使用asp.net core注入的方式进行读取了. 步骤 首先根据配置项的结构定义一个配置类,比如叫AppSettin ...

  7. .net core 读取appsettings.json乱码

    .net core 读取配置文件乱码:vs2019读取appsettings.json乱码问题; .net core 读取appsettings.json乱码问题;用notepad++或者其他编辑器打 ...

  8. .NET Core类库项目中如何读取appsettings.json中的配置

    这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions . 1)先看丑陋的方法 比如在 RedisCli ...

  9. Asp.net Core 和类库读取配置文件信息

    Asp.net Core 和类库读取配置文件信息 看干货请移步至.net core 读取配置文件公共类 首先开一个脑洞,Asp.net core 被使用这么长时间了,但是关于配置文件(json)的读取 ...

随机推荐

  1. 大将军UE分析

    1.过关奖励,先播放特效,在显示奖励 2.鼠标移到人物身上装备,提示双击卸载 3.战场随机事件,出发开启增加buff 4.主线任务简单化,副本支线可玩性增强 5.乌泱泱几十个活动 6.升级的爽快感[升 ...

  2. 51nod1179【思维】

    题意: 给你n个数,求两两之间的最大GCD: 思路: n太大,然后感觉是分解质因子,但是感觉分解质因子还是搞不出谁和谁的GCD: 但是可以发现,GCD给了一个范围1e6,所以能不能枚举GCD,然后看看 ...

  3. CF939D Love Rescue

    题意 给定两个长度为n的由小写字母组成的字符串 每次可以花费1的代价,指定两个字母,把其中一个全部变为另一个 求使两个字符串相同的最小花费 n <= 100000 因为谁变成谁没有关系反正相等就 ...

  4. Tomcat 连接池调优

    性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...

  5. Date类学习一

  6. cmd 查看端口占用情况

    netstat -nao|findstr 端口号 打开任务管理器查看

  7. java数据结构----图

    1.图:.在计算机程序设计中,图是最常用的数据结构之一.对于存储一般的数据问题,一般用不到图.但对于某些(特别是一些有趣的问题),图是必不可少的.图是一种与树有些相像的数据结构,从数学意义上来讲,树是 ...

  8. asyncio模块

    asyncio模块   这是官网也非常推荐的一个实现高并发的一个模块,python也是在python 3.4中引入了协程的概念. asyncio 是干什么的? 异步网络操作 并发 协程 python3 ...

  9. Flask (一) 简介

    Flask简介 Flask是一个基于Python实现的Web开发‘微’框架 'MicroFramework' Django是一个重型框架 官方文档: http://flask.pocoo.org/do ...

  10. 19 标签:xml或者html

    1       标签:xml或者html 1.1  使用XmlSlurper解析xml groovy处理xml非常容易.XmlSlurper 类用来处理xml.在处理xml方面,还有其他的处理方式,但 ...