正如主题所说,我不知道如何访问在 CreateWebHostBuilder 中设置的 Configuration 对象。Code
:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.CustomExtension();
在代码示例中,我想在 CustomExtension 方法中访问 Configuration
最佳答案
对于 IWebHostBuilder
,用于配置WebHost
管道。
一般方式,如果你想访问Configuration
,您需要通过 Configuration
反对 CustomExtension
喜欢 :
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseStartup<Startup>();
另一种方式,你可以尝试像
UseConfiguration
访问 Configuration
对象,但代码只有在 CreateWebHostBuilder(args).Build().Run()
时才会运行叫做。 public static class WebHostBuilderExtension
{
public static IWebHostBuilder CustomExtension(this IWebHostBuilder webHostBuilder)
{
return webHostBuilder.ConfigureServices(services => {
var config = services.BuildServiceProvider().GetRequiredService<IConfiguration>();
var connection = config.GetConnectionString("Default");
});
}
public static void CustomAction(IServiceCollection services)
{
var config = services.BuildServiceProvider().GetRequiredService<IConfiguration>();
var connection = config.GetConnectionString("Default");
}
}
用途:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.CustomExtension()
.ConfigureServices(services => WebHostBuilderExtension.CustomAction(services));
关于c# - 如何访问 IWebHostBuilder 扩展中的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53620670/