ASP.NET 读取配置文件

在 ASP.NET Core 应用程序开发中。配置信息通常存储在 appsettings.json 文件中,可能包含各种数据结构,如简单的键值对、数组或嵌套对象。本文将介绍如何在 ASP.NET Core 中使用 IConfiguration 接口来访问和操作应用程序配置信息的不同类型,包括获取简单键值对、数组中的元素以及嵌套对象的属性。

示例:在控制器中操作应用程序配置信息

假设我们有以下的 appsettings.json 文件内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "System": "Error"
    }
  },
  "key": "value",
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
  },
  "Redis": {
    "Enabled": false,
    "Instance": "Malus",
    "ConnectionString": "127.0.0.1:6379,password=123456,DefaultDatabase=6"
  },
  "Emails": ["email1@example.com", "email2@example.com", "email3@example.com"]
}

创建一个 ASP.NET Core 控制器来演示如何在控制器中访问和操作这些配置信息。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;

namespace YourNamespace.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ConfigurationController : ControllerBase
    {
        private readonly IConfiguration _configuration;

        public ConfigurationController(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [HttpGet]
        public IActionResult GetConfigurationValues()
        {

            // 获取嵌套对象的属性
            var logLevelDefault = _configuration["Logging:LogLevel:Default"];
            var logLevelMicrosoft = _configuration["Logging:LogLevel:Microsoft"];
            var logLevelSystem = _configuration["Logging:LogLevel:System"];

            // 获取简单键值对
            var key = _configuration["key"];

            // 获取连接字符串
            var defaultConnectionString = _configuration.GetConnectionString("ConnectionStrings:DefaultConnection");

            // 获取 Redis 配置信息
            var redisEnabled = _configuration.GetValue<bool>("Redis:Enabled");
            var redisInstance = _configuration["Redis:Instance"];
            var redisConnectionString = _configuration["Redis:ConnectionString"];

            // 获取数组中的元素
            var emailsArray = _configuration.GetSection("Emails").Get<string[]>();
            var firstEmail = _configuration.GetValue<string>("Emails:0");
            var secondEmail = _configuration.GetValue<string>("Emails:1");

            return Ok(new
                      {
                          LogLevelDefault = logLevelDefault,
                          LogLevelMicrosoft = logLevelMicrosoft,
                          LogLevelSystem = logLevelSystem,
                          Key = key,
                          DefaultConnectionString = defaultConnectionString,
                          RedisEnabled = redisEnabled,
                          RedisInstance = redisInstance,
                          RedisConnectionString = redisConnectionString
                          EmailsArray = emailsArray,
                          FirstEmail = firstEmail,
                          SecondEmail = secondEmail,
                      });
        }
    }
}
posted @ 2024-05-04 20:05  好大的鱼  阅读(57)  评论(0)    收藏  举报