예제 #1
0
    internal WebApplicationBuilder(WebApplicationOptions options, Action <IHostBuilder>?configureDefaults = null)
    {
        var configuration = new ConfigurationManager();

        configuration.AddEnvironmentVariables(prefix: "ASPNETCORE_");

        _hostApplicationBuilder = new HostApplicationBuilder(new HostApplicationBuilderSettings
        {
            Args            = options.Args,
            ApplicationName = options.ApplicationName,
            EnvironmentName = options.EnvironmentName,
            ContentRootPath = options.ContentRootPath,
            Configuration   = configuration,
        });

        // Set WebRootPath if necessary
        if (options.WebRootPath is not null)
        {
            Configuration.AddInMemoryCollection(new[]
            {
                new KeyValuePair <string, string?>(WebHostDefaults.WebRootKey, options.WebRootPath),
            });
        }

        // Run methods to configure web host defaults early to populate services
        var bootstrapHostBuilder = new BootstrapHostBuilder(_hostApplicationBuilder);

        // This is for testing purposes
        configureDefaults?.Invoke(bootstrapHostBuilder);

        bootstrapHostBuilder.ConfigureWebHostDefaults(webHostBuilder =>
        {
            // Runs inline.
            webHostBuilder.Configure(ConfigureApplication);

            webHostBuilder.UseSetting(WebHostDefaults.ApplicationKey, _hostApplicationBuilder.Environment.ApplicationName ?? "");
            webHostBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, Configuration[WebHostDefaults.PreventHostingStartupKey]);
            webHostBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, Configuration[WebHostDefaults.HostingStartupAssembliesKey]);
            webHostBuilder.UseSetting(WebHostDefaults.HostingStartupExcludeAssembliesKey, Configuration[WebHostDefaults.HostingStartupExcludeAssembliesKey]);
        },
                                                      options =>
        {
            // We've already applied "ASPNETCORE_" environment variables to hosting config
            options.SuppressEnvironmentConfiguration = true;
        });

        // This applies the config from ConfigureWebHostDefaults
        // Grab the GenericWebHostService ServiceDescriptor so we can append it after any user-added IHostedServices during Build();
        _genericWebHostServiceDescriptor = bootstrapHostBuilder.RunDefaultCallbacks();

        // Grab the WebHostBuilderContext from the property bag to use in the ConfigureWebHostBuilder. Then
        // grab the IWebHostEnvironment from the webHostContext. This also matches the instance in the IServiceCollection.
        var webHostContext = (WebHostBuilderContext)bootstrapHostBuilder.Properties[typeof(WebHostBuilderContext)];

        Environment = webHostContext.HostingEnvironment;

        Host            = new ConfigureHostBuilder(bootstrapHostBuilder.Context, Configuration, Services);
        WebHost         = new ConfigureWebHostBuilder(webHostContext, Configuration, Services);
        _webAuthBuilder = new WebApplicationAuthenticationBuilder(Services);
    }
    public static ConfigureHostBuilder ConfigureLogging(this ConfigureHostBuilder host)
    {
        host.UseSerilog((hostContext, loggerConfiguration) =>
        {
            loggerConfiguration.ReadFrom.Configuration(hostContext.Configuration);
        });

        return(host);
    }
 public static void AddSerilog(this ConfigureHostBuilder host)
 {
     host.UseSerilog((context, _, configuration) => configuration.ReadFrom.Configuration(context.Configuration));
 }
예제 #4
0
        public static void ConfigureDevonfwAWS(this IServiceCollection services, IConfiguration configuration, ConfigureHostBuilder hostBuilder)
        {
            AwsOptions = services.GetTypedOptions <AwsOptions>(configuration, "AWS");

            if (AwsOptions.EnableAws)
            {
                hostBuilder.ConfigureWebHostDefaults(webHostBuilder => webHostBuilder.InitializeDevonFwAws(AwsOptions));
            }
        }