Last active
February 13, 2020 12:14
-
-
Save babakontheweb/0a59ffefb775526b6818aa18907eb6c6 to your computer and use it in GitHub Desktop.
A copy of Microsoft's WebHost.CreateDefaultBuilder but with IIS and FileWatcher dependencies removed for Linux environments. See https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs#L148
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <summary> | |
/// Initializes a new instance of the <see cref="WebHostBuilder"/> class with pre-configured defaults. | |
/// </summary> | |
/// <remarks> | |
/// The following defaults are applied to the returned <see cref="WebHostBuilder"/>: | |
/// use Kestrel as the web server and configure it using the application's configuration providers, | |
/// set the <see cref="IHostingEnvironment.ContentRootPath"/> to the result of <see cref="Directory.GetCurrentDirectory()"/>, | |
/// load <see cref="IConfiguration"/> from 'appsettings.json', | |
/// load <see cref="IConfiguration"/> from User Secrets when <see cref="IHostingEnvironment.EnvironmentName"/> is 'Development' using the entry assembly, | |
/// load <see cref="IConfiguration"/> from environment variables, | |
/// load <see cref="IConfiguration"/> from supplied command line args, | |
/// configures the <see cref="ILoggerFactory"/> to log to the console and debug output, | |
/// and enables the ability for frameworks to bind their options to their default configuration sections. | |
/// </remarks> | |
/// <param name="args">The command line args.</param> | |
/// <returns>The initialized <see cref="IWebHostBuilder"/>.</returns> | |
public static IWebHostBuilder CreateWebHostBuilder(string[] args) | |
{ | |
var builder = new WebHostBuilder() | |
.UseKestrel() | |
.UseContentRoot(Directory.GetCurrentDirectory()) | |
.ConfigureAppConfiguration((hostingContext, config) => | |
{ | |
var env = hostingContext.HostingEnvironment; | |
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false); | |
if (env.IsDevelopment()) | |
{ | |
var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName)); | |
if (appAssembly != null) | |
{ | |
config.AddUserSecrets(appAssembly, optional: true); | |
} | |
} | |
config.AddEnvironmentVariables(); | |
if (args != null) | |
{ | |
config.AddCommandLine(args); | |
} | |
}) | |
.ConfigureLogging((hostingContext, logging) => | |
{ | |
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); | |
logging.AddConsole(); | |
logging.AddDebug(); | |
}) | |
.UseDefaultServiceProvider((context, options) => | |
{ | |
options.ValidateScopes = context.HostingEnvironment.IsDevelopment(); | |
}); | |
if (args != null) | |
{ | |
builder.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build()); | |
} | |
return builder; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment