代码之家  ›  专栏  ›  技术社区  ›  SteinTech

如何访问IWebHostBuilder扩展中的配置

  •  0
  • SteinTech  · 技术社区  · 7 年前

    Code :

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

    1 回复  |  直到 7 年前
        1
  •  7
  •   MiguelSlv    4 年前

    对于 IWebHostBuilder ,它用于配置 WebHost 管道

    Configuration ,你需要通过考试 Configuration CustomExtension

    var config = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .Build();
    
    var host = new WebHostBuilder()
    .UseConfiguration(config)
    .UseKestrel()
    .UseStartup<Startup>();
    

    另一方面,你可以像 UseConfiguration 访问 配置 对象,但仅当 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));