解释 ASP.NET Core 中 Program 类的用途
一个ASP.NET核心应用同样开始一个.NET控制台应用程序。它使用文件中Main()定义的方法Program.cs作为应用程序的入口点。Main()每当您启动Web应用程序时,框架都会调用该方法。
在ASP.NETCore应用程序中,该Main()方法构建并运行Host。Host对象是ASP.NETCore应用程序的基本部分之一。它包含您的应用程序使用的配置和网络服务器(Kestrel)。
程序.cs
这是Program.cs标准ASP.NETCore应用程序中的示例文件。
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 nhooo{ 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(); }); } }
在上面的例子中,
该CreateHostBuilder()方法使用默认配置创建一个IHostBuilder实例。
ConfigureWebHostDefaults()使用WebHostBuilder对象将应用程序配置为使用Kestrel。
CreateDefaultBuilder()是一种静态辅助方法,通过使用标准配置创建IHostBuilder来简化应用程序的创建。
UseStartup
配置IHostBuilder后,该Build()方法将创建并从IHostBuilder返回IHost的实例。但是,应用程序仍然没有侦听请求。
该Run()方法运行IHost并侦听HTTP请求。
如您所见,Program类提供初始化代码来创建Web主机并侦听传入请求。大多数样板ASP.NET核心配置发生在CreateDefaultBuilder()方法中。本Startup.cs类处理特定应用程序的配置,即,通过您的应用中间件管道所需要的服务。
通常,一旦应用程序开始增长,您就不会更改Program类,而您将经常修改Startup类以添加/删除应用程序需要的服务。