using Microsoft.Extensions.Configuration;
namespace web.tools;
public class settingHelper
{
public static IConfiguration _config { get; set; }
public settingHelper(IConfiguration configuration)
{
_config = configuration;
}
/// <summary>
/// 过期偏移时间
/// </summary>
public static int ClockSkew => Convert.ToInt32(Get("JwtClockSkew"));
/// <summary>
/// 获取配置文件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
public static T? Get<T>(string key)
where T : class, new()
{
var model = new T();
_config.Bind(key, model);
return model;
}
public static string Get(string key)
{
try
{
return _config[key];
}
catch
{
return null;
}
}
public static string Get(string key, bool IsConn = false)
{
string value;
try
{
if (IsConn)
{
value = _config.GetConnectionString(key);
}
else
{
value = _config[key];
}
}
catch (Exception)
{
value = null;
}
return value;
}
public static IConfigurationSection GetSection(string key)
{
try
{
return _config.GetSection(key);
}
catch
{
return null;
}
}
}
配置工具类的注册和使用
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// 引入配置文件
var basePath = AppContext.BaseDirectory;
var path = Path.Combine(basePath, "Files");
var _config = new ConfigurationBuilder()
.SetBasePath(basePath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
// SetBasePath 将基于文件的提供程序的 FileProvider 设置为具有基路径的 PhysicalFileProvider。
// AddJsonFile 将 JSON 配置源添加到 builder。
// Build 使用在 Sources 中注册的提供程序集中的 键和值 生成.
builder.Services.AddSingleton(new settingHelper(_config));
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build(); // app 是 WebApplication对象
//WebApplication 类
//ASP.NET Core 有3个 Host 类,是ASP.NET Core中用于初始化,生命周期管理,启动Web 服务的最重要的类。所以详细重点分析一下这几个类,分别是:
//WebApplication,ASP.NET Core 6 引入的替代WebHost的类,可以用于 Web App或者 Web API
//Host,非 Web App或者Web API 使用的 Host 类,比如纯控制台,或者 Windows Service。
//WebHost,ASP.NET Core 6之前的版本使用的Host类。
// WebApplication 2 个静态方法
//CreateBuilder(),用于创建WebApplicationBuilder 对象,再用 Build 模式添加一些中间件,再创建WebApplication对象。
//Create(),用于直接创建一个WebApplication对象,会默认添加和配置一些中间件。
//MapGet(),模式匹配 HTTP Get请求,映射到某个endpoint。
app.MapGet("/", () => "Hello World!");
// 通过 WebApplication对象 添加内置的或者自定义的中间件
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var isUseSwagger = settingHelper.Get("UseSwagger"); // 获取是否启用 Swagger 选项
var conn = settingHelper.Get("ConnectionStrings:SugarConnectString"); // 使用Get获取字符串中的数据库连接字符串
var conn1 = settingHelper.Get("SqlDbType",true); // 获取数据库类型 如果第二个参数 true 直接获取 ConnectionStrings 里面key值
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();