开门见山, 接下来展示几种在ASP.Net Core中读取配置文件的三种方式
一、依赖注入方式
系统提供一个IConfiguration的接口, 而且是系统自动注入的服务.
配置文件是这样的:
{
"ConfigEntity": {
"ConfigurationShow": "this is a configuration"
}
}
[ApiController]
[Route("api/configuration/")]
public class ConfigurationController : ControllerBase
{
//通过注入获取Configuration服务
private readonly IConfiguration _config;
public ConfigurationController(IConfiguration configuration)
{
_config = configuration;
}
[HttpGet("{configName}")]
public IActionResult GetConfiguration(string configName)
{
Console.WriteLine(_config[configName]);
return Ok(_config[configName]);
}
}
二、绑定类方式
结合配置文件, 编写一个类
public class ConfigEntity
{
public static ConfigEntity Instance = new ConfigEntity();
public string ConfigurationShow { get; set; }
}
然后在StartUp类中的ConfigureServices方法中添加一个:
Configuration.GetSection("ConfigEntity").Bind(ConfigEntity.Instance);
如此, 就可以ConfigEntity这个类绑定在一起
[HttpGet("class")]
public IActionResult GetConfigurationByClass()
{
Console.WriteLine(ConfigEntity.Instance.ConfigurationShow);
return Ok(ConfigEntity.Instance.ConfigurationShow);
}
三、自定义Helper类实现
helper类的实现
public static class ConfigHelper
{
// <summary>
/// 获取配置文件中的内容,继承自IConfiguration
/// </summary>
private static IConfiguration _configuration { get; set; }
static ConfigHelper()
{
//在当前目录或者根目录中寻找appsettings.json文件
var fileName = "appsettings.json";
var directory = AppContext.BaseDirectory;
directory = directory.Replace("\\", "/");
var filePath = $"{directory}/{fileName}";
var builder = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true);
_configuration = builder.Build();
}
public static string GetConfig(string configName)
{
return _configuration[configName];
}
}
Contorller实现
[HttpGet("helper/{configName}")]
public IActionResult GetConfigurationByHelper(string configName)
{
return Ok(ConfigHelper.GetConfig(configName));
}
请求结果:
以上就是个人总结的三种方式
参考官方文档: [微软官方文档