Web开发:ABP框架3——入门级别的接口增删改查实现原理

一、上节回顾

运用了ABP框架,使用了EFcore进行增删改查

二、程序的入口

代码解说:

cs 复制代码
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的主要内容:

bash 复制代码
1.引入日志,若报错写在日志里面。
2.使用了 Autofac 作为依赖注入容器。
3.添加了BookStoreHttpApiHostModule模块(配置模块、服务注册、设置数据库连接、配置中间件等)。
4.启动程序

(未完待续....)

相关推荐
凯丨3 小时前
AI 蠕虫来了:恶意文档如何通过 Copilot for Word 自我传播?
人工智能·c#·copilot
Aaron - Wistron3 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
极光代码工作室5 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
骊城英雄5 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰5 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
哎呦喂我去去去5 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
caishenzhibiao6 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
库拉库拉里7 小时前
Word文档的标题总是自动出现首行缩进怎么办?
c#·word·xhtml
在世修行7 小时前
从零打造 C# 工业视觉检测系统(一):项目全景与架构设计
c#·视觉检测
牡丹雅忻18 小时前
AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
java·开发语言·c#