public async Task ExternalContainerInstanceCanBeUsedForEverything() { var disposables = new List <DisposableService>(); var containerFactory = new ExternalContainerFactory(services => { services.AddSingleton(sp => { var service = new DisposableService(); disposables.Add(service); return(service); }); }); var host = new WebHostBuilder() .UseStartup <StartupWithExternalServices>() .UseServer(new TestServer()) .ConfigureServices(services => { services.AddSingleton <IServiceProviderFactory <IServiceCollection> >(containerFactory); }) .Build(); using (host) { await host.StartAsync(); } // We should create the hosting service provider and the application service provider Assert.Equal(2, containerFactory.ServiceProviders.Count); Assert.Equal(2, disposables.Count); Assert.NotEqual(disposables[0], disposables[1]); Assert.True(disposables[0].Disposed); Assert.True(disposables[1].Disposed); }