CreateHostBuilder(args).Build().Run();
这句语句处于c#webapi程序的第一句,它的作用是:启动接口的三个步骤:
- 创建一个HostBuilder对象。
- 执行IHostBuilder.Build()方法创建IHost对象。
- 执行IHost.Run()方法启动。
创建和配置Host(主机)的过程就是创建和配置ASP.NET Core应用程序的过程。它包含了应用程序配置、开发环境配置、日志文件配置以及依赖注入。
创建一个HostBuilder接口的对象。
Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});
在这句话后面可以跟很多服务的配置。也可以跟host生命周期事件的挂载。
.ConfigureWebHostDefaults() —配置webapi的信息。
startup.cs类文件
配置服务和应用的请求管道
该文件包含 startup构造函数,configuration属性,ConfigureServices方法以及Configure方法。
构造函数的作用是注入三种服务。
- IConfiguration 服务
- IWebHostEnvironment 服务
- IHostEnvironment 服务
这个构造函数的作用就是将在main函数中配置的服务注入到服务器中。
ConfigureServices函数:配置服务到DI容器中。
下面的代码就是在di容器中加入 webapi所使用的mvc架构和注册其中的控制器服务。
public void ConfigureServices(IServiceCollection services){//注册标准的mvc架构//services.AddMVC();//注册controller相关服务,纯webapiservices.AddControllers();}
Configure方法:用于配置http请求管道,请求中间件。(在ConfigureServices函数之后调用)
下面代码中,app.UseRouting() 和app.UseEndpoints() 必须搭配在一起使用。分别是请求路由中间件,以及将中间件对应到终结点上。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){//处理异常的if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");}app.UseStaticFiles(); // 使~/指向wwwroot文件夹//使用路由服务 创建路由中间件EndpointRoutingMiddlewareapp.UseRouting();//账号认证//app.UseAuthorization();//给路由中间件设置终结点app.UseEndpoints(endpoints =>{//自定义路由endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");});}