Forked from babakontheweb/NoINotifyCreateWebHostBuilder_dotnetcore-2.x
Created
February 13, 2020 12:14
-
-
Save daltonnyx/015a1f66b912ac233ea07bb708629777 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