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