React to xnd dependency injection refactorings
This commit is contained in:
parent
828e8d755e
commit
3774b6055f
|
|
@ -4,9 +4,11 @@
|
|||
using System;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
using Microsoft.AspNet.Server.Features;
|
||||
using Microsoft.Dnx.Compilation;
|
||||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace Microsoft.AspNet.Hosting
|
||||
{
|
||||
|
|
@ -15,21 +17,14 @@ namespace Microsoft.AspNet.Hosting
|
|||
private const string HostingJsonFile = "Microsoft.AspNet.Hosting.json";
|
||||
private const string ConfigFileKey = "config";
|
||||
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public Program(IServiceProvider serviceProvider)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public void Main(string[] args)
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// Allow the location of the json file to be specified via a --config command line arg
|
||||
var tempBuilder = new ConfigurationBuilder().AddCommandLine(args);
|
||||
var tempConfig = tempBuilder.Build();
|
||||
var configFilePath = tempConfig[ConfigFileKey] ?? HostingJsonFile;
|
||||
|
||||
var appBasePath = _serviceProvider.GetRequiredService<IApplicationEnvironment>().ApplicationBasePath;
|
||||
var appBasePath = PlatformServices.Default.Application.ApplicationBasePath;
|
||||
var config = new ConfigurationBuilder()
|
||||
.SetBasePath(appBasePath)
|
||||
.AddJsonFile(configFilePath, optional: true)
|
||||
|
|
@ -37,7 +32,7 @@ namespace Microsoft.AspNet.Hosting
|
|||
.AddCommandLine(args)
|
||||
.Build();
|
||||
|
||||
var host = new WebHostBuilder(_serviceProvider, config, captureStartupErrors: true).Build();
|
||||
var host = new WebHostBuilder(config, captureStartupErrors: true).Build();
|
||||
using (var app = host.Start())
|
||||
{
|
||||
var hostingEnv = app.Services.GetRequiredService<IHostingEnvironment>();
|
||||
|
|
|
|||
|
|
@ -10,9 +10,11 @@ using Microsoft.AspNet.Hosting.Server;
|
|||
using Microsoft.AspNet.Hosting.Startup;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.Http.Internal;
|
||||
using Microsoft.Dnx.Compilation;
|
||||
using Microsoft.Dnx.Runtime;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Microsoft.AspNet.Hosting
|
||||
|
|
@ -27,8 +29,7 @@ namespace Microsoft.AspNet.Hosting
|
|||
|
||||
public const string OldServerKey = "server";
|
||||
public const string ServerKey = "Hosting:Server";
|
||||
|
||||
private readonly IServiceProvider _services;
|
||||
|
||||
private readonly IHostingEnvironment _hostingEnvironment;
|
||||
private readonly ILoggerFactory _loggerFactory;
|
||||
private readonly IConfiguration _config;
|
||||
|
|
@ -45,23 +46,18 @@ namespace Microsoft.AspNet.Hosting
|
|||
private string _serverFactoryLocation;
|
||||
private IServerFactory _serverFactory;
|
||||
|
||||
public WebHostBuilder(IServiceProvider services)
|
||||
: this(services, config: new ConfigurationBuilder().Build())
|
||||
public WebHostBuilder()
|
||||
: this(config: new ConfigurationBuilder().Build())
|
||||
{
|
||||
}
|
||||
|
||||
public WebHostBuilder(IServiceProvider services, IConfiguration config)
|
||||
: this(services, config: config, captureStartupErrors: false)
|
||||
public WebHostBuilder(IConfiguration config)
|
||||
: 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)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(config));
|
||||
|
|
@ -69,7 +65,6 @@ namespace Microsoft.AspNet.Hosting
|
|||
|
||||
_hostingEnvironment = new HostingEnvironment();
|
||||
_loggerFactory = new LoggerFactory();
|
||||
_services = services;
|
||||
_config = config;
|
||||
_captureStartupErrors = captureStartupErrors;
|
||||
}
|
||||
|
|
@ -77,17 +72,6 @@ namespace Microsoft.AspNet.Hosting
|
|||
private IServiceCollection BuildHostingServices()
|
||||
{
|
||||
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(_loggerFactory);
|
||||
|
||||
|
|
@ -111,6 +95,13 @@ namespace Microsoft.AspNet.Hosting
|
|||
_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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,32 +33,32 @@ namespace Microsoft.AspNet.TestHost
|
|||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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 =>
|
||||
{
|
||||
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(
|
||||
services ?? CallContextServiceLocator.Locator.ServiceProvider,
|
||||
config ?? new ConfigurationBuilder().Build());
|
||||
}
|
||||
|
||||
public static WebHostBuilder CreateBuilder()
|
||||
{
|
||||
return CreateBuilder(services: null, config: null);
|
||||
return CreateBuilder(config: null);
|
||||
}
|
||||
|
||||
public HttpMessageHandler CreateHandler()
|
||||
|
|
|
|||
|
|
@ -405,9 +405,7 @@ namespace Microsoft.AspNet.Hosting
|
|||
|
||||
private WebHostBuilder CreateBuilder(IConfiguration config = null)
|
||||
{
|
||||
return new WebHostBuilder(
|
||||
CallContextServiceLocator.Locator.ServiceProvider,
|
||||
config ?? new ConfigurationBuilder().Build());
|
||||
return new WebHostBuilder(config ?? new ConfigurationBuilder().Build());
|
||||
}
|
||||
|
||||
public IFeatureCollection Initialize(IConfiguration configuration)
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ namespace Microsoft.AspNet.Hosting
|
|||
var builder = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(vals);
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -31,19 +31,6 @@ namespace Microsoft.AspNet.TestHost
|
|||
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]
|
||||
public async Task RequestServicesAutoCreated()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue