一、上节回顾
运用了ABP框架,使用了EFcore进行增删改查
二、程序的入口
代码解说:
public class Program // 定义程序主类
{
public async static Task<int> Main(string[] args) // 主方法,返回状态码
{
// 配置Serilog日志
Log.Logger = new LoggerConfiguration()
#if DEBUG // 如果是调试模式
.MinimumLevel.Debug() // 设置最小日志级别为Debug
#else // 否则
.MinimumLevel.Information() // 设置最小日志级别为Information
#endif
.MinimumLevel.Override("Microsoft", LogEventLevel.Information) // 重写Microsoft命名空间的日志级别
.MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) // 重写EF Core的日志级别
.Enrich.FromLogContext() // 从上下文中丰富日志信息
.WriteTo.Async(c => c.File("Logs/logs.txt")) // 异步写入日志到文件
.WriteTo.Async(c => c.Console()) // 异步写入日志到控制台
.CreateLogger(); // 创建日志记录器
try
{
Log.Information("Starting Acme.BookStore.HttpApi.Host."); // 记录应用启动信息
var builder = WebApplication.CreateBuilder(args); // 创建Web应用程序构建器
builder.Host.AddAppSettingsSecretsJson() // 添加应用设置的秘密配置
.UseAutofac() // 使用Autofac作为依赖注入容器
.UseSerilog(); // 使用Serilog作为日志提供者
await builder.AddApplicationAsync<BookStoreHttpApiHostModule>(); // 异步添加应用程序模块
var app = builder.Build(); // 构建应用程序
await app.InitializeApplicationAsync(); // 初始化应用程序
await app.RunAsync(); // 运行应用程序
return 0; // 返回0表示成功
}
catch (Exception ex) // 捕获异常
{
Log.Fatal(ex, "Host terminated unexpectedly!"); // 记录致命错误信息
return 1; // 返回1表示失败
}
finally
{
Log.CloseAndFlush(); // 关闭日志并刷新
}
}
}
【总结】Program.cs的主要内容:
1.引入日志,若报错写在日志里面。
2.使用了 Autofac 作为依赖注入容器。
3.添加了BookStoreHttpApiHostModule模块(配置模块、服务注册、设置数据库连接、配置中间件等)。
4.启动程序
(未完待续....)