解释 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。

更新于: 2021年6月22日

685 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告