天天看點

.net core (.net6) 讀取配置檔案 appsettings.json

.net core (.net6) 讀取配置檔案 appsettings.json
建立個工具類,友善其它地方使用,代碼如下
AppHelper:
namespace net6mvc.Utils
{
    public class AppHelper
    {
        private static IConfiguration _config;
        public AppHelper(IConfiguration configuration)
        {
            _config = configuration;
        }
        /// <summary>
        /// 讀取指定節點的字元串
        /// </summary>
        /// <param name="sessions"></param>
        /// <returns></returns>
        public static string ReadAppSettings(params string[] sessions)
        {
            try
            {
                if (sessions.Any())
                {
                    return _config[string.Join(":", sessions)];
                }
            }
            catch
            {
                return "";
            }
            return "";
        }
        /// <summary>
        /// 讀取實體資訊
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="session"></param>
        /// <returns></returns>
        public static List<T> ReadAppSettings<T>(params string[] session)
        {
            List<T> list = new List<T>();
            _config.Bind(string.Join(":", session), list);
            return list;
        }
    }
}
appsettings.json 示例如下:
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AppVer": "2022-01-13 21:54",
  "Test": {
    "A": "Hello",
    "B": {
      "C": "World"
    }
  }
}
修改Program.cs
在CreateBuilder前增加
using net6mvc.Utils;
IConfiguration configuration = new ConfigurationBuilder()
                            .AddJsonFile("appsettings.json")
                            .Build();
在 CreateBuilder 後增加
builder.Services.AddSingleton (new AppHelper(configuration));
完整代碼:
using net6mvc.Utils;
IConfiguration configuration = new ConfigurationBuilder()
                            .AddJsonFile("appsettings.json")
                            .Build();
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSingleton (new AppHelper(configuration));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
使用
public IActionResult Index()
{
    string a = AppHelper.ReadAppSettings("Test", "A");
    string b = AppHelper.ReadAppSettings("Test", "B", "C");
    ViewBag.Test1 = $"{a} ***** {b}";
    string AppVer = AppHelper.ReadAppSettings("AppVer");
    ViewBag.AppVer = AppVer;
    return View();
}