Document

.net core 3.x 启动顺序

1. .net core 3.x启动执行顺序

  1. ConfigureWebHostDefaults:使用.net core 3.x的默认配置
  2. ConfigureHostConfiguration
  3. ConfigureAppConfiguration
  4. ConfigureServices
  5. ConfigureLogging
  6. Startup
  7. Startup.ConfigureSerices:主要是用于注册服务容器,例如进行依赖注入和读取配置文件等。
  8. Startup.Configure:.net core 3.x启动时会调用这个方法,这里主要是配置HTTP请求管道,例如路由、mvc、静态文件等。

2. 例子

asp.net core本质上是一个命令行程序,从Program.cs的Main方法启动。新建一个API类型的模板(默认已经配置好了一些功能)来进行测试。

.net core 3.x 启动顺序

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

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => {
                // 这里调用了Startup这个类作为配置
                webBuilder.UseStartup<Startup>( );
            });
}


public class Startup {
    // 这里的configuration也是通过依赖注入获得
    // 因为.net core默认已经进行了一些依赖注入的绑定
    public Startup(IConfiguration configuration) {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services) {
        // 这里添加我们自己依赖注入服务

        services.AddControllers( );
    }

    // 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( );
        }

        // .NET Core 3.x的执行管道
        app.UseRouting( );

        app.UseAuthorization( );

        app.UseEndpoints(endpoints => {
            endpoints.MapControllers( );
        });
    }
}
posted @ 2021-07-29 17:57  从未被超越  阅读(179)  评论(0)    收藏  举报