Asp.Net Core 进阶(一) —— 读取appsettings.json

  我们以前在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 = 200, Message = "" });
    }
    return JsonHelper.Instance.Serialize(new { Code = 500, 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"]

原文地址:https://www.cnblogs.com/jesen1315/p/11050939.html

时间: 2024-11-11 07:44:01

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

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

这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions . 1)先看丑陋的方法 比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串: { "redis": { "ConnectionString": "xxx" } } 需要在 RedisClient 的构造函数参数中添加 IConfigurati

.NET Core The configuration file &#39;appsettings.json&#39; was not found and is not optional

错误代码 public Startup() { var builder = new ConfigurationBuilder().AddJsonFile("AppSetting.json"); Configuration = builder.Build(); } 修改 public Startup(IHostingEnvironment environment) { var builder = new ConfigurationBuilder().SetBasePath(environ

ASP.NET CORE读取appsettings.json的配置

如何在appsettings.json配置应用程序设置,微软给出的方法:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration 下面是我的做法: 因为我建立的是空项目什么都没有,好多东西都需要新建和引用,新建appsettings.json文件,然后添加一个AppSettings字段,包含配置和值 在Models文件夹下创建一个AppSettingsModel.cs NuGet包管理器引用或者在project

ASP.NET Core读取appsettings.json配置文件信息

1.在配置文件appsettings.json里新增AppSettings节点 { "Logging": { "LogLevel": { "Default": "Warning" } }, "AppSettings": { "HttpUrl": "http://www.ehongcn.com", "Copyright": "山南远宏科技有

.net core读取appsettings.json配置

官方文档:href 在老版本的ASP.NET里,项目的全局配置一般都存在web.config里的appSettings里,只需要用ConfigurationManager.AppSettings["Foo"]就可以把名为Foo的变量取出来.在ASP.NET Core里,访问配置文件的方式也有了很大变化.但是ASP.NET Core里web.config已经被appsettings.json替换,加上ASP.NET Core里大量用了依赖注入(Dependency Injection),

干货:.net core实现读取appsettings.json配置文件(建议收藏)

看好多人不懂在.NET CORE中如何读取配置文件,我这里分两篇,这一篇介绍怎样通过appsettings.json配置读取文件信息.这里我会教大家两种方式: 第一种直接放到通用类库,那里想调往那调. 1.编辑我们的appsettings.json文件 { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warn

.Net Core 读取 appsettings.json

1. 首先些一个类 public class MySettings { public string P1 { get; set; } public string P2 { get; set; } } 2. 在 appsettings.json 中添加配置项 { "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" }

如何在.Net Core 2.0 App中读取appsettings.json

This is something that strangely doesn’t seem to be that well documented and took me a while to figure out though in the end it’s pretty simple. All that’s required is to add the following NuGet packages and an appsettings.json file. Microsoft.Extens

Asp.Net Core 中无法使用 ConfigurationManager.AppSettings

刚刚接触.net core ,准备把之前的一些技术常用工具先移植到.net Standard上面来, 方便以后使用,结果用到ConfigurationManager 的 AppSettings 就出现各种问题 首先是 错误 CS0012 类型“NameValueCollection”在未引用的程序集中定义.必须添加对程序集“System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用. 考虑到.net