Merge branch 'rel/2.0.0-preview2' into dev
This commit is contained in:
commit
f67292cf22
|
|
@ -1,6 +1,6 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.26524.0
|
VisualStudioVersion = 15.0.26507.0
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -47,8 +47,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrimDeps", "tools\TrimDeps\
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjectionApp", "test\TestSites\DependencyInjectionApp\DependencyInjectionApp.csproj", "{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjectionApp", "test\TestSites\DependencyInjectionApp\DependencyInjectionApp.csproj", "{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Tests", "test\Microsoft.AspNetCore.Tests\Microsoft.AspNetCore.Tests.csproj", "{914D3FAD-8B94-4353-B24F-B264F675481C}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -103,10 +101,6 @@ Global
|
||||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.Build.0 = Release|Any CPU
|
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{914D3FAD-8B94-4353-B24F-B264F675481C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{914D3FAD-8B94-4353-B24F-B264F675481C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{914D3FAD-8B94-4353-B24F-B264F675481C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{914D3FAD-8B94-4353-B24F-B264F675481C}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -126,6 +120,5 @@ Global
|
||||||
{302400A0-98BB-4C04-88D4-C32DC2D4B945} = {ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}
|
{302400A0-98BB-4C04-88D4-C32DC2D4B945} = {ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}
|
||||||
{67E4C92F-6D12-4C52-BB79-B8D11BFC6B82} = {ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}
|
{67E4C92F-6D12-4C52-BB79-B8D11BFC6B82} = {ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}
|
||||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||||
{914D3FAD-8B94-4353-B24F-B264F675481C} = {9E49B5B9-9E72-42FB-B684-90CA1B1BCF9C}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,6 @@
|
||||||
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging" />
|
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging" />
|
||||||
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging.Console" />
|
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging.Console" />
|
||||||
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging.Debug" />
|
<MetaPackagePackageReference Include="Microsoft.Extensions.Logging.Debug" />
|
||||||
<MetaPackagePackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -208,6 +207,7 @@
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Logging.TraceSource" />
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Logging.TraceSource" />
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Extensions.ObjectPool" />
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.ObjectPool" />
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Options" />
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Options" />
|
||||||
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Primitives" />
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.Primitives" />
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Extensions.WebEncoders" />
|
<FullMetaPackagePackageReference Include="Microsoft.Extensions.WebEncoders" />
|
||||||
<FullMetaPackagePackageReference Include="Microsoft.Net.Http.Headers" />
|
<FullMetaPackagePackageReference Include="Microsoft.Net.Http.Headers" />
|
||||||
|
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
// 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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.AspNetCore.Builder;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Microsoft.Extensions.Options.Infrastructure;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Exposes extension method for establishing configuration defaults.
|
|
||||||
/// </summary>
|
|
||||||
public static class AspNetCoreExtensions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Allows features to do some default setup for their options, i.e. binding against the default configuration.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="services">The <see cref="IServiceCollection"/> to modify.</param>
|
|
||||||
/// <returns>The service collection.</returns>
|
|
||||||
public static IServiceCollection ConfigureAspNetCoreDefaults(this IServiceCollection services)
|
|
||||||
{
|
|
||||||
services.AddTransient(typeof(IConfigureOptions<>), typeof(ConfigureDefaults<>));
|
|
||||||
services.AddTransient(typeof(IConfigureNamedOptions<>), typeof(ConfigureDefaults<>));
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -13,7 +13,6 @@ using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.Options.Infrastructure;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore
|
namespace Microsoft.AspNetCore
|
||||||
{
|
{
|
||||||
|
|
@ -188,10 +187,6 @@ namespace Microsoft.AspNetCore
|
||||||
.UseDefaultServiceProvider((context, options) =>
|
.UseDefaultServiceProvider((context, options) =>
|
||||||
{
|
{
|
||||||
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
|
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
|
||||||
})
|
|
||||||
.ConfigureServices(services =>
|
|
||||||
{
|
|
||||||
services.ConfigureAspNetCoreDefaults();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
|
|
|
||||||
|
|
@ -97,119 +97,6 @@ namespace Microsoft.AspNetCore.Tests
|
||||||
}, setTestEnvVars: true, environment: environment);
|
}, setTestEnvVars: true, environment: environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
|
||||||
[InlineData("127.0.0.1", "127.0.0.1")]
|
|
||||||
[InlineData("::1", "[::1]")]
|
|
||||||
public async Task BindsKestrelHttpEndPointFromConfiguration(string endPointAddress, string requestAddress)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText("appsettings.json", @"
|
|
||||||
{
|
|
||||||
""Microsoft:AspNetCore:Server:Kestrel"": {
|
|
||||||
""EndPoints"": {
|
|
||||||
""EndPoint"": {
|
|
||||||
""Address"": """ + endPointAddress + @""",
|
|
||||||
""Port"": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
");
|
|
||||||
using (var webHost = WebHost.Start(context => context.Response.WriteAsync("Hello, World!")))
|
|
||||||
{
|
|
||||||
var port = GetWebHostPort(webHost);
|
|
||||||
|
|
||||||
Assert.NotEqual(0, port);
|
|
||||||
|
|
||||||
using (var client = new HttpClient())
|
|
||||||
{
|
|
||||||
var response = await client.GetAsync($"http://{requestAddress}:{port}");
|
|
||||||
response.EnsureSuccessStatusCode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
File.Delete("appsettings.json");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public async Task BindsKestrelHttpsEndPointFromConfiguration_ReferencedCertificateFile()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText("appsettings.json", @"
|
|
||||||
{
|
|
||||||
""Microsoft:AspNetCore:Server:Kestrel"": {
|
|
||||||
""EndPoints"": {
|
|
||||||
""EndPoint"": {
|
|
||||||
""Address"": ""127.0.0.1"",
|
|
||||||
""Port"": 0,
|
|
||||||
""Certificate"": ""TestCert""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
""Certificates"": {
|
|
||||||
""TestCert"": {
|
|
||||||
""Source"": ""File"",
|
|
||||||
""Path"": ""testCert.pfx"",
|
|
||||||
""Password"": ""testPassword""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
");
|
|
||||||
using (var webHost = WebHost.Start(context => context.Response.WriteAsync("Hello, World!")))
|
|
||||||
{
|
|
||||||
var port = GetWebHostPort(webHost);
|
|
||||||
|
|
||||||
var response = await HttpClientSlim.GetStringAsync($"https://127.0.0.1:{port}", validateCertificate: false);
|
|
||||||
Assert.Equal("Hello, World!", response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
File.Delete("appsettings.json");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public async Task BindsKestrelHttpsEndPointFromConfiguration_InlineCertificateFile()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText("appsettings.json", @"
|
|
||||||
{
|
|
||||||
""Microsoft:AspNetCore:Server:Kestrel"": {
|
|
||||||
""EndPoints"": {
|
|
||||||
""EndPoint"": {
|
|
||||||
""Address"": ""127.0.0.1"",
|
|
||||||
""Port"": 0,
|
|
||||||
""Certificate"": {
|
|
||||||
""Source"": ""File"",
|
|
||||||
""Path"": ""testCert.pfx"",
|
|
||||||
""Password"": ""testPassword""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
");
|
|
||||||
using (var webHost = WebHost.Start(context => context.Response.WriteAsync("Hello, World!")))
|
|
||||||
{
|
|
||||||
var port = GetWebHostPort(webHost);
|
|
||||||
|
|
||||||
var response = await HttpClientSlim.GetStringAsync($"https://127.0.0.1:{port}", validateCertificate: false);
|
|
||||||
Assert.Equal("Hello, World!", response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
File.Delete("appsettings.json");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void LoggingConfigurationSectionPassedToLoggerByDefault()
|
public void LoggingConfigurationSectionPassedToLoggerByDefault()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Microsoft.Extensions.Options.Infrastructure;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Tests
|
|
||||||
{
|
|
||||||
public class ConfigurationTests
|
|
||||||
{
|
|
||||||
private class TestOptions
|
|
||||||
{
|
|
||||||
public string Message { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ConfigureTestDefault : ConfigureDefaultOptions<TestOptions>
|
|
||||||
{
|
|
||||||
public ConfigureTestDefault(IConfiguration config) :
|
|
||||||
base(options => config.GetSection("Test").Bind(options))
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void ConfigureAspNetCoreDefaultsEnablesBindAgainstDefaultConfig()
|
|
||||||
{
|
|
||||||
var dic = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Test:Message", "yadayada"}
|
|
||||||
};
|
|
||||||
var configurationBuilder = new ConfigurationBuilder();
|
|
||||||
configurationBuilder.AddInMemoryCollection(dic);
|
|
||||||
var config = configurationBuilder.Build();
|
|
||||||
var services = new ServiceCollection()
|
|
||||||
.AddSingleton<IConfiguration>(config)
|
|
||||||
.AddOptions()
|
|
||||||
.AddTransient<ConfigureDefaultOptions<TestOptions>, ConfigureTestDefault>()
|
|
||||||
.ConfigureAspNetCoreDefaults();
|
|
||||||
var sp = services.BuildServiceProvider();
|
|
||||||
|
|
||||||
var options = sp.GetRequiredService<IOptions<TestOptions>>().Value;
|
|
||||||
Assert.Equal("yadayada", options.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void DefaultConfigIgnoredWithoutConfigureAspNetCoreDefaults()
|
|
||||||
{
|
|
||||||
var dic = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Test:Message", "yadayada"}
|
|
||||||
};
|
|
||||||
var configurationBuilder = new ConfigurationBuilder();
|
|
||||||
configurationBuilder.AddInMemoryCollection(dic);
|
|
||||||
var config = configurationBuilder.Build();
|
|
||||||
var services = new ServiceCollection()
|
|
||||||
.AddSingleton<IConfiguration>(config)
|
|
||||||
.AddOptions()
|
|
||||||
.AddTransient<ConfigureDefaultOptions<TestOptions>, ConfigureTestDefault>();
|
|
||||||
var sp = services.BuildServiceProvider();
|
|
||||||
|
|
||||||
var options = sp.GetRequiredService<IOptions<TestOptions>>().Value;
|
|
||||||
Assert.Null(options.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<Import Project="..\..\build\common.props" />
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
|
|
||||||
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
|
|
||||||
<PackageReference Include="Moq" Version="$(MoqVersion)" />
|
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitVersion)" />
|
|
||||||
<PackageReference Include="xunit" Version="$(XunitVersion)" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
Loading…
Reference in New Issue