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相关服务,纯webapi
services.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文件夹
//使用路由服务 创建路由中间件EndpointRoutingMiddleware
app.UseRouting();
//账号认证
//app.UseAuthorization();
//给路由中间件设置终结点
app.UseEndpoints(endpoints =>
{
//自定义路由
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}