.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運行項目,可以看到,讀取了配置文件里的數據

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM