正如主题所说,我不知道如何访问在 CreateWebHostBuilder 中设置的 Configuration 对象。
Code:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.CustomExtension();
Run Code Online (Sandbox Code Playgroud)
在代码示例中,我想在 CustomExtension 方法中访问 Configuration
对于IWebHostBuilder,它用于配置WebHost管道。
对于一般方式,如果要访问Configuration,则需要将Configuration对象传递给CustomExtensionlike :
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)
另一种方式,您可以尝试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");
}
}
Run Code Online (Sandbox Code Playgroud)
用途:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.CustomExtension()
.ConfigureServices(services => WebHostBuilderExtension.CustomAction(services));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4633 次 |
| 最近记录: |