.Net Core3.0 WebApi 项目框架搭建 三:读取appsettings.json

 .Net Core3.0 WebApi 项目框架搭建:目录

 

appsettings.json

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

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

新建公共类库

新建类库Webapi.Core.Common,用来存放一些公用的方法

 

我这里新建了一个Helper文件夹用来存放帮助类,并添加一个AppSettings.cs

 

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

using System;
using System.Collections.Generic;

namespace Webapi.Core.Common.Helper
{
    /// <summary>
    /// appsettings.json操作类
    /// </summary>
    public class Appsettings
    {
        static IConfiguration Configuration { get; set; }
        static string contentPath { get; set; }

        public Appsettings(string contentPath)
        {
            string Path = "appsettings.json";

            //如果你把配置文件 是 根据环境变量来分开了,可以这样写
            //Path = $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json";

            Configuration = new ConfigurationBuilder()
               .SetBasePath(contentPath)
               .Add(new JsonConfigurationSource { Path = Path, Optional = false, ReloadOnChange = true })//这样的话,可以直接读目录里的json文件,而不是 bin 文件夹下的,所以不用修改复制属性
               .Build();
        }

        public Appsettings(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        /// <summary>
        /// 封装要操作的字符
        /// </summary>
        /// <param name="sections">节点配置</param>
        /// <returns></returns>
        public static string app(params string[] sections)
        {
            try
            {

                if (sections.Any())
                {
                    return Configuration[string.Join(":", sections)];
                }
            }
            catch (Exception)
            {

            }

            return "";
        }

        /// <summary>
        /// 递归获取配置信息数组
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sections"></param>
        /// <returns></returns>
        public static List<T> app<T>(params string[] sections)
        {
            List<T> list = new List<T>();
            Configuration.Bind(string.Join(":", sections), list);
            return list;
        }
    }
}

注册

ConfigureServices方法里面使用AddSingleton注册Appsettings

 public void ConfigureServices(IServiceCollection services)
        {
            //注册appsettings读取类
            services.AddSingleton(new Appsettings(Configuration));

            //注册Swagger
            services.AddSwaggerSetup();


            services.AddControllers();
        }

读取appsettings.json

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

 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "AppSettings": {
    //数据库连接字符串
    "ConnectionString": "Server=127.0.0.1;User Id=用户id;Password=密码;Database=数据库名称;",
  }
}

注册之后直接测试一下

           //注册appsettings读取类
            services.AddSingleton(new Appsettings(Configuration));
            var text = Appsettings.app(new string[] { "AppSettings", "ConnectionString" });
            Console.WriteLine($"ConnectionString:{text}");
            Console.ReadLine();

F5运行项目,可以看到,读取了配置文件里的数据

 

 

 

 

 

posted @ 2020-05-17 11:55  HuTiger  阅读(7481)  评论(3编辑  收藏  举报