0%

AspNetCore的Program类

  • IHostBuilder中的相关配置方法
  1. ConfigureWebHostDefaults:该方法注册了应用程序必要的几个组件,比如配置的组件、容器的组件等。
  2. ConfigureHostConfiguration:该方法配置了应用程序启动时需要的配置,比如端口和url
  3. ConfigureAppConfiguration:该方法可以让我们来嵌入我们自己的配置文件,供应用程序读取
  4. ConfigureServices:该方法是用来往容器里注入我们应用需要的组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
执行的顺序是:
ConfigureWebHostDefaults
ConfigureHostConfiguration
ConfigureAppConfiguration
Startup.ConfigureServices
ConfigureServices
Startup.Configure
*/
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder =>
{
Console.WriteLine("ConfigureAppConfiguration");
})
.ConfigureServices(service =>
{
Console.WriteLine("ConfigureServices");
})
.ConfigureHostConfiguration(builder =>
{
Console.WriteLine("ConfigureHostConfiguration");
})
.ConfigureWebHostDefaults(webBuilder =>
{
Console.WriteLine("ConfigureWebHostDefaults");
webBuilder.UseStartup<Startup>();
});
  • 通过CreateHostBuilder(args).Build().Run(),就可以在IHostBuilder配置完后运行整个项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
执行的顺序是:
ConfigureWebHostDefaults
ConfigureHostConfiguration
ConfigureAppConfiguration
webBuilder.ConfigureServices
ConfigureServices
webBuilder.Configure
*/
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
Console.WriteLine("ConfigureWebHostDefaults");
//webBuilder.UseStartup<Startup>();
webBuilder.ConfigureServices(services =>
{
Console.WriteLine("webBuilder.ConfigureServices");
});
webBuilder.Configure(app =>
{
Console.WriteLine("webBuilder.Configure");

app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
});
})
.ConfigureServices(service =>
{
Console.WriteLine("ConfigureServices");
})
.ConfigureHostConfiguration(builder =>
{
Console.WriteLine("ConfigureHostConfiguration");
}).ConfigureAppConfiguration(builder =>
{
Console.WriteLine("ConfigureAppConfiguration");
});
}
  • 从这段代码不难看出,Startup类并不是必需的,它可以直接写在webBuilder下,但通常使用Startup类可以使我们的代码更有结构。
-------------本文结束感谢您的阅读-------------