1、使用ConfigurationBuilder读取配置项的值
1)Settings类
public class Settings
{
private static IHttpContextAccessor _HttpContextAccessor;
public Settings(IHttpContextAccessor httpContextAccessor)
{
_HttpContextAccessor = httpContextAccessor;
}
public static void Configure(IHttpContextAccessor httpContextAccessor)
{
_HttpContextAccessor = httpContextAccessor;
}
public static IConfigurationBuilder Getbuilder()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
return builder;
}
public static string GetAppSetting(string key)
{
//return Convert.ToString(ConfigurationManager.AppSettings[key]);
var builder = Getbuilder();
var GetAppStringData = builder.Build().GetValue<string>("AppSettings:" + key);
return GetAppStringData;
}
public static string GetConnectionString(string key="DefaultName")
{
var builder = Getbuilder();
var ConnectionString = builder.Build().GetValue<string>("ConnectionStrings:"+key);
return ConnectionString;
}
}
2)在Startup中Configure()方法配置
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
Settings.Configure(httpContextAccessor);
}
}
2、使用新建配置Model的获取配置
需要使用Nuget引用如下,
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0"
搜索 "Microsoft.Extensions.Options.ConfigurationExtensions" 和 “Microsoft.Extensions.Configuration.Json”,在列表中分别找到它,点击 "安装" 即可。
相关文档:VS(Visual Studio)中Nuget的使用
1)appsettings.json配置文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"HangFire": {
"Connection": "Server=127.0.0.1;uid=root;pwd=website;database=Hangfire_DB;AllowLoadLocalInfile=true;Allow User Variables=True;",
"pathMatch": "/hangfire",
"Login": "login",
"PasswordClear": "pwd"
}
}
2)AppSettingsModel类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1
{
public class AppSettingsModel
{
public string Connection { get; set; }
public string pathMatch { get; set; }
public string Login { get; set; }
public string PasswordClear { get; set; }
}
}
3)ConfSetup配置类
public static class ConfSetup
{
private static IConfigurationRoot _configuration;
public static IConfigurationRoot Configuration
{
get
{
if (_configuration == null)
{
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
_configuration = builder.Build();
}
return _configuration;
}
set
{
_configuration = value;
}
}
}
4)获取配置项的值
var pathMatch = ConfSetup.Configuration["HangFire:pathMatch"]
var connection = ConfSetup.Configuration["HangFire:Connection"]
5)获取配置AppSettingsModel的对象
public static void Main(string[] args)
{
var hostBuilder = new HostBuilder()
.UseConsoleLifetime()
.ConfigureServices((hostContext, services) =>
{
services.Configure<AppSettingsModel>(ConfSetup.Configuration.GetSection("HangFire"));
});
var host = hostBuilder.Build();
var opt = host.Services.GetService<IOptions<AppSettingsModel>>();
AppSettingsModel model = opt.Value;
}