private IServiceProvider CreateFromBuildWebHost(string[] args) { _reporter.WriteVerbose(DesignStrings.FindingBuildWebHost); var webHostFactoryResult = WebHostFactoryResolver.ResolveWebHostFactory <object, object>(_startupAssembly); switch (webHostFactoryResult.ResultKind) { case FactoryResolutionResultKind.Success: break; case FactoryResolutionResultKind.NoEntryPoint: _reporter.WriteVerbose(DesignStrings.NoEntryPoint(_startupAssembly.GetName().Name)); return(null); case FactoryResolutionResultKind.NoCreateWebHostBuilder: case FactoryResolutionResultKind.NoBuildWebHost: _reporter.WriteVerbose(DesignStrings.NoBuildWebHost(webHostFactoryResult.ProgramType.DisplayName())); return(null); default: Debug.Fail("Unexpected value: " + webHostFactoryResult.ResultKind); return(null); } // TODO: Remove when dotnet/cli#6617 is fixed var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); if (environment == null) { environment = "Development"; Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", environment); } _reporter.WriteVerbose(DesignStrings.UsingEnvironment(environment)); _reporter.WriteVerbose(DesignStrings.UsingBuildWebHost(webHostFactoryResult.ProgramType.ShortDisplayName())); try { var webHost = webHostFactoryResult.WebHostFactory(args); var webHostType = webHost.GetType(); var servicesProperty = webHostType.GetTypeInfo().GetDeclaredProperty("Services"); var services = (IServiceProvider)servicesProperty.GetValue(webHost); return(services.CreateScope().ServiceProvider); } catch (Exception ex) { if (ex is TargetInvocationException) { ex = ex.InnerException; } _reporter.WriteVerbose(ex.ToString()); _reporter.WriteWarning(DesignStrings.InvokeBuildWebHostFailed(webHostFactoryResult.ProgramType.ShortDisplayName(), ex.Message)); return(null); } }
public void CanFindWebHost_BuildWebHostPattern() { // Arrange & Act var resolverResult = WebHostFactoryResolver.ResolveWebHostFactory(typeof(BuildWebHostPatternTestSite.Startup).Assembly); // Assert Assert.Equal(FactoryResolutionResultKind.Success, resolverResult.ResultKind); Assert.Null(resolverResult.WebHostBuilderFactory); Assert.NotNull(resolverResult.WebHostFactory); }
public void CanFindWebHost_CreateWebHostBuilderPattern() { // Arrange & Act var resolverResult = WebHostFactoryResolver.ResolveWebHostFactory(typeof(IStartupInjectionAssemblyName.Startup).Assembly); // Assert Assert.Equal(FactoryResolutionResultKind.Success, resolverResult.ResultKind); Assert.NotNull(resolverResult.WebHostBuilderFactory); Assert.NotNull(resolverResult.WebHostFactory); }
public void CanNotFindWebHostBuilder_BuildWebHostPattern() { // Arrange & Act var resolverResult = WebHostFactoryResolver.ResolveWebHostBuilderFactory <IWebHost, IWebHostBuilder>(typeof(BuildWebHostPatternTestSite.Startup).Assembly); // Assert Assert.Equal(FactoryResolutionResultKind.NoCreateWebHostBuilder, resolverResult.ResultKind); Assert.Null(resolverResult.WebHostBuilderFactory); Assert.Null(resolverResult.WebHostFactory); }
public void CanNotFindWebHost_BuildWebHostIncorrectSignature() { // Arrange & Act var resolverResult = WebHostFactoryResolver.ResolveWebHostFactory <IWebHost, IWebHostBuilder>(typeof(BuildWebHostInvalidSignature.Startup).Assembly); // Assert Assert.Equal(FactoryResolutionResultKind.NoBuildWebHost, resolverResult.ResultKind); Assert.Null(resolverResult.WebHostBuilderFactory); Assert.Null(resolverResult.WebHostFactory); }
public static IWebHostBuilder CreateFromAssemblyEntryPoint(Assembly assembly, string [] args) { var result = WebHostFactoryResolver.ResolveWebHostBuilderFactory(assembly); if (result.ResultKind != FactoryResolutionResultKind.Success) { return(null); } return(result.WebHostBuilderFactory(args)); }
public void CanFindWebHostBuilder_CreateWebHostBuilderPattern() { // Arrange & Act var resolverResult = WebHostFactoryResolver.ResolveWebHostBuilderFactory <IWebHost, IWebHostBuilder>(typeof(IStartupInjectionAssemblyName.Startup).Assembly); // Assert Assert.Equal(FactoryResolutionResultKind.Success, resolverResult.ResultKind); Assert.NotNull(resolverResult.WebHostBuilderFactory); Assert.NotNull(resolverResult.WebHostFactory); Assert.IsAssignableFrom <IWebHostBuilder>(resolverResult.WebHostBuilderFactory(Array.Empty <string>())); }