Hosting/#839 UseConfiguration with a config section

This commit is contained in:
Chris R 2018-11-28 09:31:58 -08:00
parent c0381de983
commit d852e10293
2 changed files with 29 additions and 2 deletions

View File

@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Hosting
/// <returns>The <see cref="IWebHostBuilder"/>.</returns>
public static IWebHostBuilder UseConfiguration(this IWebHostBuilder hostBuilder, IConfiguration configuration)
{
foreach (var setting in configuration.AsEnumerable())
foreach (var setting in configuration.AsEnumerable(makePathsRelative: true))
{
hostBuilder.UseSetting(setting.Key, setting.Value);
}

View File

@ -1,4 +1,4 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
@ -1129,6 +1129,33 @@ namespace Microsoft.AspNetCore.Hosting
Assert.Contains("No application configured.", exception.Message);
}
[Theory]
[MemberData(nameof(DefaultWebHostBuildersWithConfig))]
public void UseConfigurationWithSectionAddsSubKeys(IWebHostBuilder builder)
{
var config = new ConfigurationBuilder()
.AddInMemoryCollection(new[]
{
new KeyValuePair<string, string>("key", "value"),
new KeyValuePair<string, string>("nested:key", "nestedvalue"),
}).Build();
var section = config.GetSection("nested");
builder = builder
.CaptureStartupErrors(false)
.Configure(app => { })
.UseConfiguration(section)
.UseServer(new TestServer());
Assert.Equal("nestedvalue", builder.GetSetting("key"));
using (var host = builder.Build())
{
var appConfig = host.Services.GetRequiredService<IConfiguration>();
Assert.Equal("nestedvalue", appConfig["key"]);
}
}
private static void StaticConfigureMethod(IApplicationBuilder app) { }
private IWebHostBuilder CreateWebHostBuilder()