Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        public static IWebHostBuilder CreateFromAssemblyEntryPoint(Assembly assembly, string [] args)
        {
            var result = WebHostFactoryResolver.ResolveWebHostBuilderFactory(assembly);

            if (result.ResultKind != FactoryResolutionResultKind.Success)
            {
                return(null);
            }

            return(result.WebHostBuilderFactory(args));
        }
Exemple #7
0
        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>()));
        }