.Net Core3.0 WebApi 三:读取appsettings.json

.Net Core3.0 WebApi 目录

appsettings.json

我们在写项目时往往会把一些经常变动的,可能会变动的参数写到配置文件、数据库中等可以存储数据且方便配置的地方,这样会方便我们在项目上线以后做相对应的配置工作。

.Core WebApi项目中我们将把配置文件统一放在appsettings.json文件中,我们将将写一个读取配置文件的公用类。

新建公共类库

新建类库Webapi.Core.Infrastructure,(基础设施)用来存放一些公用的方法

 

使用Nuget安装Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json,Microsoft.Extensions.Configuration.Binder, 编辑ConfigHelper.cs,代码如下:

 

namespace WebApi.Core.Infrastructure.Helpers
{
    public class ConfigHelper
    {
        private static readonly IConfiguration _configuration;

        static ConfigHelper()
        {
            //在当前目录或者根目录中寻找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();
        }

        /// <summary>
        /// 获取Section的值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string GetSectionValue(string key)
        {
            return _configuration.GetSection(key).Value;
        }

        /// <summary>
        /// 获取ConnectionStrings下的值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string GetConnectionString(string key)
        {
            return _configuration.GetConnectionString(key);
        }
    }
}

 

读取appsettings.json

编辑appsetting.json,添加一个红色部分

 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "ConnectionString": "Data Source=127.0.0.1;Initial Catalog=db;User ID=uid;Password=123456;Pooling=True;Max Pool Size=512;Connect Timeout=500;"
  }
}

 

var connStr = ConfigHelper.GetConnectionString("ConnectionString");
            Console.WriteLine(connStr);

 

 

 这样就读取到了。还有另外一个方法,感兴趣的,可以自行去尝试,看看是怎么用的。

posted @ 2020-10-11 00:12  冰乐  阅读(1989)  评论(0编辑  收藏  举报