ASP.NET Core 知识速递:常用配置通用主机方法

360影视 2025-01-16 09:00 2

摘要:上一节中我们介绍了通用主机对象,这一节我们介绍配置通用主机的方法。

上一节中我们介绍了通用主机对象,这一节我们介绍配置通用主机的方法。

1.ConfigureHostConfiguration方法

我们从名字中可以看出这个是配置主句的配置方法,这个方法发生在主机配置的最早阶段,会影响主机的初始化行为。配置主要的数据来源是环境变量,命令行参数,以及hostsettings.JSON。配置通过IHostEnvironment对象获取。

2.ConfigureAppConfiguration方法

这个方法主要是应用程序级别的配置,主机的配置方法执行之后才会执行这个配置,影响应用程序运行的配置,例如业务逻辑的 JSON 文件、数据库配置等。主要的配置数据来自appsettings.json,配置通过IConfiguration对象获取。

3.例子

public class Program{ public static async Task Main(string args) { await new HostBuilder .ConfigureHostConfiguration(configHost => { // Add environment variables configHost.AddEnvironmentVariables; // Add command-line arguments configHost.AddCommandLine(args); // Add in-memory configuration for host-level configHost.AddInMemoryCollection(new Dictionary { { "Application.Name", "Host-Set-01" }, { "Application.Version", "Host-Set-1.0.0" } }); }) .ConfigureAppConfiguration((hostContext, configApp) => { // Add JSON File configuration configApp.AddJsonFile("appsettings.json", optional: true); // Add environment variables for app-level configApp.AddEnvironmentVariables; // Add in-memory configuration for app-level configApp.AddInMemoryCollection(new Dictionary { { "Application.Name", "App-Set-01" }, { "Application.Version", "App-Set-1.0.0" } }); }) .ConfigureServices((hostContext, services) => { // Register the hosted service services.AddHostedService; }) .ConfigureLogging(logging => { logging.ClearProviders; logging.AddConsole; }) .Build .RunAsync; }}public class SampleHostedService : IHostedService{ private readonly ILogger _logger; private readonly IConfiguration _config; public SampleHostedService(IConfiguration config, ILogger logger) { _config = config; _logger = logger; } public Task StartAsync(CancellationToken cancellationToken) { _logger.LogDebug("=== Testing Configuration Priority ==="); _logger.LogDebug("Application.Name: {0}", _config["Application.Name"]); _logger.LogDebug("Application.Version: {0}", _config["Application.Version"]); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { _logger.LogDebug("End of Host"); return Task.CompletedTask; }}

我们通过上面的例子测试配置的优先级:

从结果中可以看到ConfigureAppConfiguration方法配置的优先级更高。

我们使用通过命令行的方式传入:

结果一样的。

源代码地址:

来源:opendotnet

相关推荐