.NET CORE 3.1配置文件读取方式

1、背景知识点:

       IConfiguration : https://www.cnblogs.com/edison0621/p/10854215.html

      官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.configuration.iconfiguration?view=dotnet-plat-ext-3.1

2、配置文件分析以及读取方式示例

首先看配置文件,一般配置文件节点较少情况下,直接是采用以下这种通用读取配置的方式

var Username = _configuration["Steam:Username"]

对于节点较多的话以上方式就不是很优雅,下面就记录下 自定义读取配置文件 的方式 。

示例:

以控制台应用程序为例(net core api及asp net core 采用绑定配置模型的方式,涉及到注册服务此处不一一列举):

配置文件帮助类  SteamConfigHelper

public class SteamConfigHelper
    {
        private static IConfiguration _configuration;

        static SteamConfigHelper()
        {
            //在当前目录或者根目录中寻找appsettings.json文件
            var fileName = "appsettings.json";

            var directory = AppContext.BaseDirectory;
            directory = directory.Replace("\", "/");

            var filePath = $"{directory}/{fileName}";
            if (!File.Exists(filePath))
            {
                var length = directory.IndexOf("/bin");
                filePath = $"{directory.Substring(0, length)}/{fileName}";
            }

            var builder = new ConfigurationBuilder()
                .AddJsonFile(filePath, false, true);

            _configuration = builder.Build();
        }

        public static SteamJson GetSteamJson() {
            SteamJson sj = new SteamJson();
            sj = _configuration.Get<SteamJson>();//此处为SteamJson类
            return sj;
        }
    }


配置文件类 SteamJson:

public class Steam
    {
        /// <summary>
        /// 
        /// </summary>
        public string Username { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string Password { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string WebAPIKey { get; set; }
    }

    public class SteamJson
    {
        /// <summary>
        /// 
        /// </summary>
        public string ConnectionString { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Steam Steam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<int> SteamAdmins { get; set; }
    }

配置文件 appsettings.json:

{
  "ConnectionString": "server=*****;port=****;userid=****;password=****;database=****;charset=utf8;pooling=true",

  "Steam": {
    "Username": "*****",
    "Password": "*****",
    "WebAPIKey": "******"
  },

  "SteamAdmins": [
    00000000000000001
  ]
}

调用方式:

var config = SteamConfigHelper.GetSteamJson();
var Username = config.Steam.Username;
var Password = config.Steam.Password;
var config = SteamConfigHelper.GetSteamJson();
var Username = config.Steam.Username;
var Password = config.Steam.Password;
 
原文地址:https://www.cnblogs.com/souphm/p/12889761.html