appsettings.json 如何加载到 ASP.NET 核心中
How is appsettings.json loaded in ASP.NET Core
NET Core 2.x Web API 项目模板提供了 Program.cs
和 Startup.cs
(默认情况下还有其他内容)。
如果您在 Startup
的构造函数中放置一个断点,并添加一个监视,您可以看到从 appsettings.json
加载的值。
Startup.cs
和 Program.cs
没有显式加载 appsettings.json
,因此它必须在 [=22] 中调用 CreateDefaultBuilder
或 Build
时发生=].
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
NET Core 2.x Web API 项目模板提供了 Program.cs
和 Startup.cs
(默认情况下还有其他内容)。
如果您在 Startup
的构造函数中放置一个断点,并添加一个监视,您可以看到从 appsettings.json
加载的值。
Startup.cs
和 Program.cs
没有显式加载 appsettings.json
,因此它必须在 [=22] 中调用 CreateDefaultBuilder
或 Build
时发生=].
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