.NET Core 2.2下配置中的AddJsonFile选项的默认设置是什么?

时间:2019-01-20 15:47:17

标签: c# configuration

根据some wise source,有一种名为 AddJsonFile 的方法可以读取配置文件。 One of its signatures允许指定可选 reloadOnChange

IConfigurationRoot config = new ConfigurationBuilder()
  .SetBasePath(Directory.GetCurrentDirectory())
  .AddJsonFile("config.json", false, false)
  .Build();

但是,如果我使用没有明确指定签名的签名,则无法找到默认值的信息。我可以假设它是 false ,基于它是布尔值的默认值(即 default(bool) false )的事实

但是我更喜欢明确且可链接地陈述内容。

1 个答案:

答案 0 :(得分:3)

请参考位于https://github.com/aspnet/Configuration/blob/master/src/Config.Json/JsonConfigurationExtensions.cs

上的源代码。

按此,如果不提供参数,则它们为false。请注意以下方法:

        /// <summary>
        /// Adds the JSON configuration provider at <paramref name="path"/> to <paramref name="builder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param>
        /// <param name="path">Path relative to the base path stored in 
        /// <see cref="IConfigurationBuilder.Properties"/> of <paramref name="builder"/>.</param>
        /// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
        public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder, string path)
        {
            return AddJsonFile(builder, provider: null, path: path, optional: false, reloadOnChange: false);
        }
}

正如您在问题中前面提到的,您可以使用此方法的另一个重载来设置reloadOnChange值。以下是示例代码from MSDN

public class Program
{

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);

                config.AddCommandLine(args);
            })
            .UseStartup<Startup>();
}