.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运行项目,可以看到,读取了配置文件里的数据