asp.net core 主要是用来处理http请求的web应用。 使用了用于托管web应用的web主机(WebHostBuilder),对于其它类型的主机(例如消息、后台任务和其他非 HTTP 工作负载),请使用通用主机(HostBuilder)。 在程序入口Program类Main方法中创建IWebHostBuilder实例的主机,通常应用调用WebHost静态类的CreateDefaultBuilder方法开始创建主机。
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
CreateDefaultBuilder 执行下列任务:
-
使用应用的托管配置提供程序将 Kestrel 服务器配置为 Web 服务器。
-
将内容根设置为由 Directory.GetCurrentDirectory 返回的路径。
-
加载配置(主机配置和系统配置)
-
添加输出日志工具
-
启动IIS集成
也可以实例化一个web主机,可以根据项目的需求自定义一些配置信息:
public static IWebHost CreateWebHostBuilder(string[] args)
{
var builder = new WebHostBuilder();
return builder
.UseKestrel((builderContext, options) =>
{
options.Configure(builderContext.Configuration.GetSection("Kestrel"));
})
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(Path.Combine("Configs", "appsettings.json"), optional: false, reloadOnChange: true)
.AddJsonFile(Path.Combine("Configs", $"appsettings.{env.EnvironmentName}.json"))
.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.ClearProviders();
//logging.AddDatabase();
})
.UseIIS()
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
}