diff --git a/src/Microsoft.AspNet.Hosting/HostingServices.cs b/src/Microsoft.AspNet.Hosting/HostingServices.cs index 55859c9a84..6a321a0098 100644 --- a/src/Microsoft.AspNet.Hosting/HostingServices.cs +++ b/src/Microsoft.AspNet.Hosting/HostingServices.cs @@ -23,13 +23,13 @@ namespace Microsoft.AspNet.Hosting services.AddTransient(service, sp => fallbackProvider.GetService(service)); } - services.AddSingleton(sp => new HostingManifest(services)); - if (configureHostServices != null) { configureHostServices(services); } + services.AddSingleton(sp => new HostingManifest(services)); + return services; } diff --git a/test/Microsoft.AspNet.Hosting.Tests/HostingServicesFacts.cs b/test/Microsoft.AspNet.Hosting.Tests/HostingServicesFacts.cs index 25baae8074..a0fff83ac5 100644 --- a/test/Microsoft.AspNet.Hosting.Tests/HostingServicesFacts.cs +++ b/test/Microsoft.AspNet.Hosting.Tests/HostingServicesFacts.cs @@ -119,6 +119,33 @@ namespace Microsoft.AspNet.Hosting.Tests Assert.Same(singleton, provider.GetRequiredService()); } + [Fact] + public void CreateAdditionalServices_IncludesServicesInManifest() + { + // Arrange + var fallbackServices = new ServiceCollection(); + fallbackServices.AddTransient(); + fallbackServices.AddInstance(new ServiceManifest( + new Type[] { + typeof(IFakeService), + })); + var expectedInstance = new FakeService(); + var services = HostingServices.Create( + fallbackServices.BuildServiceProvider(), + additionalHostServices => additionalHostServices.AddInstance(expectedInstance)); + + // Act + var provider = services.BuildServiceProvider(); + var instance = provider.GetRequiredService(); + var anotherInstance = provider.GetRequiredService(); + var manifest = provider.GetRequiredService(); + + // Assert + Assert.Same(expectedInstance, instance); + Assert.Same(expectedInstance, anotherInstance); + Assert.Contains(typeof(IFakeServiceInstance), manifest.Services); + } + [Fact] public void CanHideImportedServices() {