forked from anjoy8/Blog.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
53 lines (48 loc) · 2.52 KB
/
Program.cs
File metadata and controls
53 lines (48 loc) · 2.52 KB
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
47
48
49
50
51
52
53
using System;
using Blog.Core.Model.Models;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Blog.Core
{
public class Program
{
public static void Main(string[] args)
{
// 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。
var host = CreateWebHostBuilder(args).Build();
// 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var loggerFactory = services.GetRequiredService<ILoggerFactory>();
try
{
// 从 system.IServicec提供程序获取 T 类型的服务。
var myContext = services.GetRequiredService<MyContext>();
// 为了大家的数据安全,这里先注释掉了,大家自己先测试玩一玩吧。
// 数据库连接字符串是在 Model 层的 Seed 文件夹下的 MyContext.cs 中
//DBSeed.SeedAsync(myContext).Wait();
}
catch (Exception e)
{
var logger = loggerFactory.CreateLogger<Program>();
logger.LogError(e, "Error occured seeding the Database.");
throw;
}
}
// 运行 web 应用程序并阻止调用线程, 直到主机关闭。
// 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法
// 将Initialize方法创建的Application管道传入以供处理消息
// 执行HostedServiceExecutor.StartAsync方法
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
//使用预配置的默认值初始化 Microsoft.AspNetCore.Hosting.WebHostBuilder 类的新实例。
WebHost.CreateDefaultBuilder(args)
//指定要由 web 主机使用的启动类型。相当于注册了一个IStartup服务。可以自定义启动服务,比如.UseStartup(typeof(StartupDevelopment).GetTypeInfo().Assembly.FullName)
//.UseUrls("http://localhost:5012")
.UseStartup<Startup>();
}
}