Loading

ASP.NET Core 基础系列(1)(Main方法)

为什么ASP.NET Core采用Main方法?

需要记住的最重要的一点是,ASP.NET Core Web 应用程序最初作为控制台应用程序启动,Main() 方法是应用程序的入口点。因此,当我们执行ASP.NET Core Web应用程序时,首先它寻找 Main() 方法,这是执行开始的方法。然后,Main()方法将ASP.NET配置并启动它。此时,应用程序将成为ASP.NET Core Web应用程序。
如果进一步查看 Main() 方法的正文,则会发现它通过将命令行参数 args 作为参数传递来调用 CreateHostBuilder() 方法,如下所示。

        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

如下所示,CreateHostBuilder() 方法返回实现 IHostBuilder 接口的对象。主机是一个静态类,可用于创建具有预配置默认值的 IHostBuilder 实例。
CreateDefaultBuilder() 方法使用预配置的默认值创建主机构建器的新实例。在内部,它配置 Kestrel(用于ASP.NET的内部 Web 服务器)、IIS整合和其他配置。

            public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

在 Main()方法中,在此 IHostBuilder 对象上,调用 Build() 方法,该方法实际生成 Web 主机。
然后,它将我们asp.net Web 主机中托管我们的Asp.net Core Web 应用程序。
最后,在 Web 主机上,它称为 Run() 方法,该方法将实际运行 Web 应用程序,并开始侦听传入的 HTTP 请求。

启动类(Startup)

在设置主机时,还使用 IHostBuilder 类的 UseStartup() 扩展方法配置启动类。启动类有两种方法,如下所示。

public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });
        }
    }

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

CreateDefaultBuilder() 方法执行的任务是什么?

作为设置 Web 主机的一部分,CreateDefaultBuilder() 方法执行几项操作。其中一些如下:

  1. 设置 Web 服务器
  2. 从各种配置源加载主机和应用程序配置
  3. 配置日志记录

在下一章, 我们将讨论CreateDefaultBuilder() 方法究竟对配置和设置 Web 服务器的作用以及应用程序的托管模型。

posted @ 2021-02-24 12:11  痕迹g  阅读(2154)  评论(3编辑  收藏  举报