我们以前在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"]

最新文章

  1. java第一天
  2. ThinkPHP 3.2.3(三)架构之模块化设计
  3. Winform读写App.config文件以及重启程序
  4. 组合数学 - 置换群的幂运算 --- poj CARDS (洗牌机)
  5. iOS 学习笔记 六 (2015.03.28)常见错误
  6. CCNA 6.3
  7. OpenGL&#174;ES基础
  8. iOS摄像头和相册-UIImagePickerController-浅析(转)
  9. 关于Struts2的类型转换详解
  10. poj3281-Dining ,最大流量,内置图
  11. 【原生js】js动态添加dom,如何绑定事件
  12. BCB实现BMP图片的RGB分解(转)
  13. 关于IOS的屏幕适配(iPhone)——Auto Layout和Size Classes
  14. JAVA-变量
  15. Flink的广播变量
  16. 大话前端解析Json对象
  17. android不知不觉偷拍他人功能实现(手机关闭依然拍照)【申明:来源于网络】
  18. matplotlib之随机漫步
  19. 在Ubuntu下解决 adb devices :???????????? no permissions 方法
  20. 001.Keepalived简介

热门文章

  1. C# 选择文件路径,选择文件
  2. 洛谷 - P5429 - Fence Planning - 并查集
  3. 手把手教你使用ueditor
  4. 豆瓣api获取图片403
  5. POJ3692【二分匹配】
  6. 点击a标签 跳到当前页面指定div
  7. Java对象池示例
  8. C 语言实例 - 从文件中读取一行
  9. luoguP4242树上的毒瘤
  10. Qt 2D绘图之二:抗锯齿渲染和坐标系统