ASP.Net Core读取配置文件的三种方法

image

​ 开门见山, 接下来展示几种在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]);
        }
    }
image

二、绑定类方式

​ 结合配置文件, 编写一个类

    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);
        }
image

三、自定义Helper类实现

​ helper类的实现

    public static class ConfigHelper
    {
        // 
        /// 获取配置文件中的内容,继承自IConfiguration
        /// 
        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));
        }

请求结果:

image

以上就是个人总结的三种方式

参考官方文档: [微软官方文档

你可能感兴趣的:(ASP.Net Core读取配置文件的三种方法)