解释 ASP.NET Core 中 Program 类的用途
ASP.NET Core 应用程序的启动方式类似于 .NET 控制台应用程序。它使用 Program.cs 文件中定义的 Main() 方法作为应用程序的入口点。每当您启动 Web 应用程序时,框架都会调用 Main() 方法。
在 ASP.NET Core 应用程序中,Main() 方法构建并运行 Host。Host 对象是 ASP.NET Core 应用程序的重要组成部分之一。它包含应用程序使用的配置和 Web 服务器(Kestrel)。
Program.cs
以下是一个标准 ASP.NET Core 应用程序中的 Program.cs 文件示例。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace TutorialsPoint{ public class Program{ public static void Main(string[] args){ CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder =>{ webBuilder.UseStartup<Startup>(); }); } }
在以上示例中,
CreateHostBuilder() 方法使用默认配置创建 IHostBuilder 实例。
ConfigureWebHostDefaults() 使用 WebHostBuilder 对象将应用程序配置为使用 Kestrel。
CreateDefaultBuilder() 是一个静态辅助方法,通过创建具有标准配置的 IHostBuilder 来简化应用程序的创建。
UseStartup<Startup> 告诉框架使用 Startup.cs 类进行配置。
配置完 IHostBuilder 后,Build() 方法会从 IHostBuilder 创建并返回 IHost 实例。但是,应用程序仍然没有监听请求。
Run() 方法运行 IHost 并监听 HTTP 请求。
如您所见,Program 类提供了初始化代码以创建 Web 主机并监听传入请求。大多数 ASP.NET Core 的样板配置都发生在 CreateDefaultBuilder() 方法中。Startup.cs 类处理应用程序特定的配置,即应用程序所需的中间件管道服务。
通常,一旦应用程序开始增长,您就不会更改 Program 类,而您会经常修改 Startup 类以添加/删除应用程序所需的 service。