- A+
所属分类:.NET技术
1. .net core 3.x启动执行顺序
- ConfigureWebHostDefaults:使用.net core 3.x的默认配置
- ConfigureHostConfiguration
- ConfigureAppConfiguration
- ConfigureServices
- ConfigureLogging
- Startup
- Startup.ConfigureSerices:主要是用于注册服务容器,例如进行依赖注入和读取配置文件等。
- Startup.Configure:.net core 3.x启动时会调用这个方法,这里主要是配置HTTP请求管道,例如路由、mvc、静态文件等。
2. 例子
asp.net core本质上是一个命令行程序,从Program.cs的Main方法启动。新建一个API类型的模板(默认已经配置好了一些功能)来进行测试。
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( ); }); } }