appsettings.json 如何加载到 ASP.NET 核心中

How is appsettings.json loaded in ASP.NET Core

NET Core 2.x Web API 项目模板提供了 Program.csStartup.cs(默认情况下还有其他内容)。

如果您在 Startup 的构造函数中放置一个断点,并添加一个监视,您可以看到从 appsettings.json 加载的值。

Startup.csProgram.cs 没有显式加载 appsettings.json,因此它必须在 [=22] 中调用 CreateDefaultBuilderBuild 时发生=].

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

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

我查看了 https://github.com/aspnet/Configuration and https://github.com/aspnet/Hosting, in particular the WebHostBuilder 上的 Microsoft 源代码,但看不到它发生的位置。

加载 appsettings.json 的代码在哪里?

appsettings.json 通过调用位于 Microsoft.AspNetCore.WebHost.

CreateDefaultBuilder 加载
 //snip
 config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
 //snip

源代码可在 GitHub - https://github.com/aspnet/AspNetCore/blob/master/src/DefaultBuilder/src/WebHost.cs#L165