zoukankan      html  css  js  c++  java
  • .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运行项目,可以看到,读取了配置文件里的数据

     

  • 相关阅读:
    属性绑定与双向数据绑定
    vue基础
    tp5提交留言入库
    tp5表单提交
    TP5分页
    TP5模板与数据组合
    vue3.x使用Proxy做双向数据绑定总结
    vue2.x响应式原理总结
    HTML5移动端自适应解决方案
    springMVC实现文件上传
  • 原文地址:https://www.cnblogs.com/huguodong/p/12904607.html
Copyright © 2011-2022 走看看