5.ASP.NET Core 中的 Main 方法

589 阅读2分钟

在 ASP.NET Core 项目中,我们有一个名为Program.cs的文件。在这个文件中,我们有一个public static void Main()方法 。

image.png

如果您对传统的.NET Framework 有任何使用经验,则知道控制台应用程序具有 Main()方法,它是该控制台程序的入口。

但今天,我们正在创建一个 ASP.NET Core Web 应用程序而不是控制台应用程序。因此,我们想到的一个显而易见的问题是。 为什么我们也会有一个Main()方法?

所以这个知识点,要记住的。ASP.NET Core 应用程序最初作为控制台应用程序启动,而Program.cs文件中的Main()方法就是入口。

因此,当运行时执行我们的应用程序时,它会查找此Main()方法以及执行配置开始的地方。

这个Main()方法配置 ASP.NET Core 并启动它,此时,它成为一个 ASP.NET Core Web 应用程序。因此,如果你跟踪一下Main()方法,它会调用 CreateHostBuilder方法传递命令行参数。

然后你就可以看到,CreateHostBuilder()方法返回一个实现 IHostBuilder 的对象。 在此对象上,调用Build()方法,会将我们的 ASP.NET Core 应用程序生成并且托管到服务器上。 在服务器上的程序调用Run() 方法,该方法运行后Web 应用程序并开始侦听传入的 HTTP 请求。 CreateHostBuilder方法调用静态类Host中的静态方法CreateDefaultBuilder()。 CreateDefaultBuilder()方法会在服务器上创建一个已经预设置好的默认值。 CreateDefaultBuilder()方法执行多项操作来创建服务器.

了解CreateDefaultBuilder()方法是用于在服务器上创建程序配置的默认值而存在。 它作为设置服务器的一部分,还使用了IHostBuilder接口中的UseStartup()的扩展方法来配置Startup类。

按照微软的规则,ASP.NET Core 中的启动类名为Startup。 这个类有 2 种方法。

image.png

  • ConfigureServices()方法配置应用程序所需的服务
  • Configure()方法配置应用程序的请求处理管道