React to xnd dependency injection refactorings
This commit is contained in:
parent
828e8d755e
commit
3774b6055f
|
|
@ -4,9 +4,11 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.AspNet.Http.Features;
|
using Microsoft.AspNet.Http.Features;
|
||||||
using Microsoft.AspNet.Server.Features;
|
using Microsoft.AspNet.Server.Features;
|
||||||
|
using Microsoft.Dnx.Compilation;
|
||||||
using Microsoft.Dnx.Runtime;
|
using Microsoft.Dnx.Runtime;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Hosting
|
namespace Microsoft.AspNet.Hosting
|
||||||
{
|
{
|
||||||
|
|
@ -15,21 +17,14 @@ namespace Microsoft.AspNet.Hosting
|
||||||
private const string HostingJsonFile = "Microsoft.AspNet.Hosting.json";
|
private const string HostingJsonFile = "Microsoft.AspNet.Hosting.json";
|
||||||
private const string ConfigFileKey = "config";
|
private const string ConfigFileKey = "config";
|
||||||
|
|
||||||
private readonly IServiceProvider _serviceProvider;
|
public static void Main(string[] args)
|
||||||
|
|
||||||
public Program(IServiceProvider serviceProvider)
|
|
||||||
{
|
|
||||||
_serviceProvider = serviceProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Main(string[] args)
|
|
||||||
{
|
{
|
||||||
// Allow the location of the json file to be specified via a --config command line arg
|
// Allow the location of the json file to be specified via a --config command line arg
|
||||||
var tempBuilder = new ConfigurationBuilder().AddCommandLine(args);
|
var tempBuilder = new ConfigurationBuilder().AddCommandLine(args);
|
||||||
var tempConfig = tempBuilder.Build();
|
var tempConfig = tempBuilder.Build();
|
||||||
var configFilePath = tempConfig[ConfigFileKey] ?? HostingJsonFile;
|
var configFilePath = tempConfig[ConfigFileKey] ?? HostingJsonFile;
|
||||||
|
|
||||||
var appBasePath = _serviceProvider.GetRequiredService<IApplicationEnvironment>().ApplicationBasePath;
|
var appBasePath = PlatformServices.Default.Application.ApplicationBasePath;
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
.SetBasePath(appBasePath)
|
.SetBasePath(appBasePath)
|
||||||
.AddJsonFile(configFilePath, optional: true)
|
.AddJsonFile(configFilePath, optional: true)
|
||||||
|
|
@ -37,7 +32,7 @@ namespace Microsoft.AspNet.Hosting
|
||||||
.AddCommandLine(args)
|
.AddCommandLine(args)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var host = new WebHostBuilder(_serviceProvider, config, captureStartupErrors: true).Build();
|
var host = new WebHostBuilder(config, captureStartupErrors: true).Build();
|
||||||
using (var app = host.Start())
|
using (var app = host.Start())
|
||||||
{
|
{
|
||||||
var hostingEnv = app.Services.GetRequiredService<IHostingEnvironment>();
|
var hostingEnv = app.Services.GetRequiredService<IHostingEnvironment>();
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,11 @@ using Microsoft.AspNet.Hosting.Server;
|
||||||
using Microsoft.AspNet.Hosting.Startup;
|
using Microsoft.AspNet.Hosting.Startup;
|
||||||
using Microsoft.AspNet.Http;
|
using Microsoft.AspNet.Http;
|
||||||
using Microsoft.AspNet.Http.Internal;
|
using Microsoft.AspNet.Http.Internal;
|
||||||
|
using Microsoft.Dnx.Compilation;
|
||||||
using Microsoft.Dnx.Runtime;
|
using Microsoft.Dnx.Runtime;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Hosting
|
namespace Microsoft.AspNet.Hosting
|
||||||
|
|
@ -27,8 +29,7 @@ namespace Microsoft.AspNet.Hosting
|
||||||
|
|
||||||
public const string OldServerKey = "server";
|
public const string OldServerKey = "server";
|
||||||
public const string ServerKey = "Hosting:Server";
|
public const string ServerKey = "Hosting:Server";
|
||||||
|
|
||||||
private readonly IServiceProvider _services;
|
|
||||||
private readonly IHostingEnvironment _hostingEnvironment;
|
private readonly IHostingEnvironment _hostingEnvironment;
|
||||||
private readonly ILoggerFactory _loggerFactory;
|
private readonly ILoggerFactory _loggerFactory;
|
||||||
private readonly IConfiguration _config;
|
private readonly IConfiguration _config;
|
||||||
|
|
@ -45,23 +46,18 @@ namespace Microsoft.AspNet.Hosting
|
||||||
private string _serverFactoryLocation;
|
private string _serverFactoryLocation;
|
||||||
private IServerFactory _serverFactory;
|
private IServerFactory _serverFactory;
|
||||||
|
|
||||||
public WebHostBuilder(IServiceProvider services)
|
public WebHostBuilder()
|
||||||
: this(services, config: new ConfigurationBuilder().Build())
|
: this(config: new ConfigurationBuilder().Build())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public WebHostBuilder(IServiceProvider services, IConfiguration config)
|
public WebHostBuilder(IConfiguration config)
|
||||||
: this(services, config: config, captureStartupErrors: false)
|
: this(config: config, captureStartupErrors: false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public WebHostBuilder(IServiceProvider services, IConfiguration config, bool captureStartupErrors)
|
public WebHostBuilder(IConfiguration config, bool captureStartupErrors)
|
||||||
{
|
{
|
||||||
if (services == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(services));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config == null)
|
if (config == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(config));
|
throw new ArgumentNullException(nameof(config));
|
||||||
|
|
@ -69,7 +65,6 @@ namespace Microsoft.AspNet.Hosting
|
||||||
|
|
||||||
_hostingEnvironment = new HostingEnvironment();
|
_hostingEnvironment = new HostingEnvironment();
|
||||||
_loggerFactory = new LoggerFactory();
|
_loggerFactory = new LoggerFactory();
|
||||||
_services = services;
|
|
||||||
_config = config;
|
_config = config;
|
||||||
_captureStartupErrors = captureStartupErrors;
|
_captureStartupErrors = captureStartupErrors;
|
||||||
}
|
}
|
||||||
|
|
@ -77,17 +72,6 @@ namespace Microsoft.AspNet.Hosting
|
||||||
private IServiceCollection BuildHostingServices()
|
private IServiceCollection BuildHostingServices()
|
||||||
{
|
{
|
||||||
var services = new ServiceCollection();
|
var services = new ServiceCollection();
|
||||||
|
|
||||||
// Import from manifest
|
|
||||||
var manifest = _services.GetService<IRuntimeServices>();
|
|
||||||
if (manifest != null)
|
|
||||||
{
|
|
||||||
foreach (var service in manifest.Services)
|
|
||||||
{
|
|
||||||
services.AddTransient(service, sp => _services.GetService(service));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
services.AddInstance(_hostingEnvironment);
|
services.AddInstance(_hostingEnvironment);
|
||||||
services.AddInstance(_loggerFactory);
|
services.AddInstance(_loggerFactory);
|
||||||
|
|
||||||
|
|
@ -111,6 +95,13 @@ namespace Microsoft.AspNet.Hosting
|
||||||
_configureServices(services);
|
_configureServices(services);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(PlatformServices.Default.Application));
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(PlatformServices.Default.Runtime));
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(PlatformServices.Default.AssemblyLoadContextAccessor));
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(PlatformServices.Default.AssemblyLoaderContainer));
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(PlatformServices.Default.LibraryManager));
|
||||||
|
services.TryAdd(ServiceDescriptor.Instance(CompilationServices.Default.LibraryExporter));
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,32 +33,32 @@ namespace Microsoft.AspNet.TestHost
|
||||||
|
|
||||||
public static TestServer Create()
|
public static TestServer Create()
|
||||||
{
|
{
|
||||||
return Create(services: null, config: null, configureApp: null, configureServices: null);
|
return Create(config: null, configureApp: null, configureServices: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TestServer Create(Action<IApplicationBuilder> configureApp)
|
public static TestServer Create(Action<IApplicationBuilder> configureApp)
|
||||||
{
|
{
|
||||||
return Create(services: null, config: null, configureApp: configureApp, configureServices: null);
|
return Create(config: null, configureApp: configureApp, configureServices: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TestServer Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
public static TestServer Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
||||||
{
|
{
|
||||||
return Create(services: null, config: null, configureApp: configureApp, configureServices: configureServices);
|
return Create(config: null, configureApp: configureApp, configureServices: configureServices);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TestServer Create(IServiceProvider services, Action<IApplicationBuilder> configureApp, Func<IServiceCollection, IServiceProvider> configureServices)
|
public static TestServer Create(Action<IApplicationBuilder> configureApp, Func<IServiceCollection, IServiceProvider> configureServices)
|
||||||
{
|
{
|
||||||
return new TestServer(CreateBuilder(services, config: null, configureApp: configureApp, configureServices: configureServices));
|
return new TestServer(CreateBuilder(config: null, configureApp: configureApp, configureServices: configureServices));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TestServer Create(IServiceProvider services, IConfiguration config, Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
public static TestServer Create(IConfiguration config, Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
||||||
{
|
{
|
||||||
return new TestServer(CreateBuilder(services, config, configureApp, configureServices));
|
return new TestServer(CreateBuilder(config, configureApp, configureServices));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebHostBuilder CreateBuilder(IServiceProvider services, IConfiguration config, Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
public static WebHostBuilder CreateBuilder(IConfiguration config, Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices)
|
||||||
{
|
{
|
||||||
return CreateBuilder(services, config, configureApp,
|
return CreateBuilder(config, configureApp,
|
||||||
s =>
|
s =>
|
||||||
{
|
{
|
||||||
if (configureServices != null)
|
if (configureServices != null)
|
||||||
|
|
@ -69,21 +69,20 @@ namespace Microsoft.AspNet.TestHost
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebHostBuilder CreateBuilder(IServiceProvider services, IConfiguration config, Action<IApplicationBuilder> configureApp, Func<IServiceCollection, IServiceProvider> configureServices)
|
public static WebHostBuilder CreateBuilder(IConfiguration config, Action<IApplicationBuilder> configureApp, Func<IServiceCollection, IServiceProvider> configureServices)
|
||||||
{
|
{
|
||||||
return CreateBuilder(services, config).UseStartup(configureApp, configureServices);
|
return CreateBuilder(config).UseStartup(configureApp, configureServices);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebHostBuilder CreateBuilder(IServiceProvider services, IConfiguration config)
|
public static WebHostBuilder CreateBuilder(IConfiguration config)
|
||||||
{
|
{
|
||||||
return new WebHostBuilder(
|
return new WebHostBuilder(
|
||||||
services ?? CallContextServiceLocator.Locator.ServiceProvider,
|
|
||||||
config ?? new ConfigurationBuilder().Build());
|
config ?? new ConfigurationBuilder().Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebHostBuilder CreateBuilder()
|
public static WebHostBuilder CreateBuilder()
|
||||||
{
|
{
|
||||||
return CreateBuilder(services: null, config: null);
|
return CreateBuilder(config: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HttpMessageHandler CreateHandler()
|
public HttpMessageHandler CreateHandler()
|
||||||
|
|
|
||||||
|
|
@ -405,9 +405,7 @@ namespace Microsoft.AspNet.Hosting
|
||||||
|
|
||||||
private WebHostBuilder CreateBuilder(IConfiguration config = null)
|
private WebHostBuilder CreateBuilder(IConfiguration config = null)
|
||||||
{
|
{
|
||||||
return new WebHostBuilder(
|
return new WebHostBuilder(config ?? new ConfigurationBuilder().Build());
|
||||||
CallContextServiceLocator.Locator.ServiceProvider,
|
|
||||||
config ?? new ConfigurationBuilder().Build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IFeatureCollection Initialize(IConfiguration configuration)
|
public IFeatureCollection Initialize(IConfiguration configuration)
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNet.Hosting
|
||||||
var builder = new ConfigurationBuilder()
|
var builder = new ConfigurationBuilder()
|
||||||
.AddInMemoryCollection(vals);
|
.AddInMemoryCollection(vals);
|
||||||
var config = builder.Build();
|
var config = builder.Build();
|
||||||
return new WebHostBuilder(CallContextServiceLocator.Locator.ServiceProvider, config, captureStartupErrors: true);
|
return new WebHostBuilder(config, captureStartupErrors: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task AssertResponseContains(Func<IFeatureCollection, Task> app, string expectedText)
|
private async Task AssertResponseContains(Func<IFeatureCollection, Task> app, string expectedText)
|
||||||
|
|
|
||||||
|
|
@ -31,19 +31,6 @@ namespace Microsoft.AspNet.TestHost
|
||||||
TestServer.Create(app => { });
|
TestServer.Create(app => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void ThrowsIfNoApplicationEnvironmentIsRegisteredWithTheProvider()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var services = new ServiceCollection().BuildServiceProvider();
|
|
||||||
|
|
||||||
// Act & Assert
|
|
||||||
Assert.Throws<InvalidOperationException>(
|
|
||||||
() => TestServer.Create(
|
|
||||||
services,
|
|
||||||
new ConfigurationBuilder().Build(), new Startup().Configure, configureServices: null));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task RequestServicesAutoCreated()
|
public async Task RequestServicesAutoCreated()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue