.Net Core系列:读取配置文件

1. 控制台应用

   新建一个控制台应用,添加两个Package:

Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json

1.1 单个配置文件

  创建配置文件appsettings.json:

{
  "Data": "10000",
  "ConnectionStrings": {
    "DevContext": "开发库",
    "ProdContext": "生产库"
  }
}

  读取配置文件:

using System;

using System.IO;
using Microsoft.Extensions.Configuration;

namespace Libing.Core.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json");
            var config = builder.Build();

            Console.WriteLine(config["Data"]); // 配置键
            Console.WriteLine(config.GetSection("ConnectionStrings:DevContext").Value); // 分层键
        }
    }
}

  通过ConfigurationBuilder对象来创建ConfigurationRoot对象,进行读取配置文件。

  SetBasePath:设置配置文件基础路径

  AddJsonFile:添加读取的Json文件

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json");

  配置文件可选及修改自动加载设置:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json");

  配置键约定:

  (1)键不区分大小写。 例如,ConnectionString 和 connectionstring 被视为等效键。

  (2)分层键使用冒号分隔符 (:)

1.2 多个配置文件

  AddJsonFile:添加多个配置文件。

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json")
    .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true);
{
  "Data": "10000",
  "ConnectionStrings": {
    "DefaultContext": "默认库"
  }
}
appsettings.json
{
  "Data": "10000",
  "ConnectionStrings": {
    "DefaultContext": "开发库"
  }
}
appsettings.Development.json
using System;

using System.IO;
using Microsoft.Extensions.Configuration;

namespace Libing.Core.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .AddJsonFile("appsettings.Development.json");
            var config = builder.Build();

            Console.WriteLine(config.GetConnectionString("DefaultContext")); // 输出:开发库
        }
    }
}
using System;

using System.IO;
using Microsoft.Extensions.Configuration;

namespace Libing.Core.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.Development.json")
                .AddJsonFile("appsettings.json");
            var config = builder.Build();

            Console.WriteLine(config.GetConnectionString("DefaultContext")); // 输出:默认库
        }
    }
}

  配置键相同时,读取选择最后一个添加的文件(AddJsonFile)。

  若要读取所有添加文件的配置信息,可遍历ConfigurationRoot的Providers属性。

using System;

using System.IO;
using Microsoft.Extensions.Configuration;

namespace Libing.Core.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .AddJsonFile("appsettings.Development.json");
            var config = builder.Build();

            foreach (var provider in config.Providers)
            {
                provider.TryGet("ConnectionStrings:DefaultContext", out string defaultContext);
                Console.WriteLine(defaultContext);
            }

            // 输出:默认库
            //      开发库
        }
    }
}

2. API应用程序

猜你喜欢

转载自www.cnblogs.com/libingql/p/11326358.html
今日推荐