From 91514c9af7e0f4c44029b51f05a01c6fe4c96e4c Mon Sep 17 00:00:00 2001
From: Chris Ross <Tratcher@Outlook.com>
Date: Wed, 16 Jan 2019 16:44:17 -0800
Subject: [PATCH] Update generic host wrapper config #6765 (#6770)

---
 .../src/GenericHost/GenericWebHostBuilder.cs  |  5 +-
 .../Hosting/test/WebHostBuilderTests.cs       | 48 +++++++++++++++++++
 2 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs b/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
index b38bf97f05e..80c8c76ef43 100644
--- a/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
+++ b/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
@@ -327,7 +327,10 @@ namespace Microsoft.AspNetCore.Hosting.Internal
                 return webHostBuilderContext;
             }
 
-            return (WebHostBuilderContext)contextVal;
+            // Refresh config, it's periodically updated/replaced
+            var webHostContext = (WebHostBuilderContext)contextVal;
+            webHostContext.Configuration = context.Configuration;
+            return webHostContext;
         }
 
         public string GetSetting(string key)
diff --git a/src/Hosting/Hosting/test/WebHostBuilderTests.cs b/src/Hosting/Hosting/test/WebHostBuilderTests.cs
index 5fcd8943c2b..fd87f235fd4 100644
--- a/src/Hosting/Hosting/test/WebHostBuilderTests.cs
+++ b/src/Hosting/Hosting/test/WebHostBuilderTests.cs
@@ -945,6 +945,54 @@ namespace Microsoft.AspNetCore.Hosting
             }
         }
 
+        [Theory]
+        [MemberData(nameof(DefaultWebHostBuildersWithConfig))]
+        public void Build_AppConfigAvailableEverywhere(IWebHostBuilder builder)
+        {
+            builder = builder
+                .CaptureStartupErrors(false)
+                .ConfigureAppConfiguration((context, configurationBuilder) => {
+                    configurationBuilder.AddInMemoryCollection(
+                        new[]
+                        {
+                            new KeyValuePair<string,string>("appconfig", "appvalue")
+                        });
+                })
+                .ConfigureLogging((context, logging) =>
+                {
+                    Assert.Equal("appvalue", context.Configuration["appconfig"]);
+                })
+                .ConfigureServices((context, services) =>
+                {
+                    Assert.Equal("appvalue", context.Configuration["appconfig"]);
+                })
+                .UseDefaultServiceProvider((context, services) =>
+                {
+                    Assert.Equal("appvalue", context.Configuration["appconfig"]);
+                })
+                .UseStartup<StartupCheckConfig>()
+                .UseServer(new TestServer());
+
+            using (var host = builder.Build())
+            {
+                var configuration = host.Services.GetRequiredService<IConfiguration>();
+                Assert.Equal("appvalue", configuration["appconfig"]);
+            }
+        }
+
+        public class StartupCheckConfig
+        {
+            public StartupCheckConfig(IConfiguration config)
+            {
+                Assert.Equal("value", config["testhostingstartup:config"]);
+            }
+
+            public void Configure(IApplicationBuilder app)
+            {
+
+            }
+        }
+
         [Theory]
         [MemberData(nameof(DefaultWebHostBuildersWithConfig))]
         public void Build_DoesRunHostingStartupFromPrimaryAssemblyEvenIfNotSpecified(IWebHostBuilder builder)
-- 
GitLab