public WebApplication( IServiceCollection appServices, IStartupLoader startupLoader, WebApplicationOptions options, IConfiguration config) { if (appServices == null) { throw new ArgumentNullException(nameof(appServices)); } if (startupLoader == null) { throw new ArgumentNullException(nameof(startupLoader)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } _config = config; _options = options; _applicationServiceCollection = appServices; _startupLoader = startupLoader; _applicationLifetime = new ApplicationLifetime(); _applicationServiceCollection.AddSingleton<IApplicationLifetime>(_applicationLifetime); }
public void AllowsNumberForDetailedErrors(string value, bool expected) { var parameters = new Dictionary<string, string>() { { "detailedErrors", value } }; var config = new WebApplicationOptions(new ConfigurationBuilder().AddInMemoryCollection(parameters).Build()); Assert.Equal(expected, config.DetailedErrors); }
public void ReadsOldEnvKey() { var parameters = new Dictionary<string, string>() { { "ENV", "Development" } }; var config = new WebApplicationOptions(new ConfigurationBuilder().AddInMemoryCollection(parameters).Build()); Assert.Equal("Development", config.Environment); }
public void ReadsParametersCorrectly() { var parameters = new Dictionary<string, string>() { { "webroot", "wwwroot"}, { "server", "Microsoft.AspNet.Server.Kestrel"}, { "application", "MyProjectReference"}, { "environment", "Development"}, { "detailederrors", "true"}, { "captureStartupErrors", "true" } }; var config = new WebApplicationOptions(new ConfigurationBuilder().AddInMemoryCollection(parameters).Build()); Assert.Equal("wwwroot", config.WebRoot); Assert.Equal("Microsoft.AspNet.Server.Kestrel", config.ServerFactoryLocation); Assert.Equal("MyProjectReference", config.Application); Assert.Equal("Development", config.Environment); Assert.True(config.CaptureStartupErrors); Assert.True(config.DetailedErrors); }
public static void Initialize(this IHostingEnvironment hostingEnvironment, string applicationBasePath, WebApplicationOptions options, IConfiguration configuration) { if (options == null) { throw new ArgumentNullException(nameof(options)); } var webRoot = options.WebRoot; if (webRoot == null) { // Default to /wwwroot if it exists. var wwwroot = Path.Combine(applicationBasePath, "wwwroot"); if (Directory.Exists(wwwroot)) { hostingEnvironment.WebRootPath = wwwroot; } } else { hostingEnvironment.WebRootPath = Path.Combine(applicationBasePath, webRoot); } if (!string.IsNullOrEmpty(hostingEnvironment.WebRootPath)) { hostingEnvironment.WebRootPath = Path.GetFullPath(hostingEnvironment.WebRootPath); if (!Directory.Exists(hostingEnvironment.WebRootPath)) { Directory.CreateDirectory(hostingEnvironment.WebRootPath); } hostingEnvironment.WebRootFileProvider = new PhysicalFileProvider(hostingEnvironment.WebRootPath); } else { hostingEnvironment.WebRootFileProvider = new NullFileProvider(); } var environmentName = options.Environment; hostingEnvironment.EnvironmentName = environmentName ?? hostingEnvironment.EnvironmentName; hostingEnvironment.Configuration = configuration; }
private IServiceCollection BuildHostingServices() { // Apply the configuration settings var configuration = _config ?? WebApplicationConfiguration.GetDefault(); var mergedConfiguration = new ConfigurationBuilder() .Add(new IncludedConfigurationProvider(configuration)) .AddInMemoryCollection(_settings) .Build(); _config = mergedConfiguration; _options = new WebApplicationOptions(_config); var services = new ServiceCollection(); services.AddSingleton(_hostingEnvironment); services.AddSingleton(_loggerFactory); services.AddTransient<IStartupLoader, StartupLoader>(); services.AddTransient<IServerLoader, ServerLoader>(); services.AddTransient<IApplicationBuilderFactory, ApplicationBuilderFactory>(); services.AddTransient<IHttpContextFactory, HttpContextFactory>(); services.AddLogging(); services.AddOptions(); var diagnosticSource = new DiagnosticListener("Microsoft.AspNet"); services.AddSingleton<DiagnosticSource>(diagnosticSource); services.AddSingleton<DiagnosticListener>(diagnosticSource); // Conjure up a RequestServices services.AddTransient<IStartupFilter, AutoRequestServicesStartupFilter>(); var defaultPlatformServices = PlatformServices.Default; if (defaultPlatformServices != null) { if (defaultPlatformServices.Application != null) { var appEnv = defaultPlatformServices.Application; if (!string.IsNullOrEmpty(_options.ApplicationBasePath)) { appEnv = new WrappedApplicationEnvironment(_options.ApplicationBasePath, appEnv); } services.TryAddSingleton(appEnv); } if (defaultPlatformServices.Runtime != null) { services.TryAddSingleton(defaultPlatformServices.Runtime); } } if (_configureServices != null) { _configureServices(services); } return services; }