前言
在 ASP.NET Core 开发中,主机(Host)是应用程序的入口和运行环境。随着版本的迭代,ASP.NET Core 提供了不同的主机模型,包括 Host、WebHost 和 WebApplication。许多开发者对这些概念容易混淆,本文将深入解析它们的区别,并通过实际代码演示各自的用法。
一、主机模型概述
1.1 主机的作用
主机在 ASP.NET Core 中负责:
- 应用程序的启动和生命周期管理
- 依赖注入容器的配置
- 应用程序配置的设置
- 日志系统的初始化
- 中间件管道的构建(针对 Web 应用)
1.2 三种主机的演进
- WebHost (1.0-3.x):最初的 Web 应用主机
- Host (3.0+):通用主机,用于非 HTTP 场景
- WebApplication (6.0+):现代化 Web 应用主机
二、三种主机的详细对比
2.1 WebHost (传统 Web 主机)
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) => { /* 配置设置 */ })
.ConfigureLogging(logging => { /* 日志配置 */ })
.UseStartup<Startup>();
}
关键点:
- 使用 WebHost.CreateDefaultBuilder 创建
- 需要 Startup 类分离配置
- 在 ASP.NET Core 3.0+ 中已过时
2.2 Host (通用主机)
public class Program
{
public static void Main([] )
{
CreateHostBuilder().Build().Run();
}
=>
Host.CreateDefaultBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
:
{
{
}
}


