# ASP.NET Core6 **Repository Path**: abc601674759/asp.net-core6 ## Basic Information - **Project Name**: ASP.NET Core6 - **Description**: ASP.NET Core6框架,已经配置好数据库,过滤器,异常处理,日志,缓存,Swagger,JWT,autofac,RabbitMQ - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2023-04-28 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ASP.NET Core 6 Web API 框架 ## 介绍 这是一个基于 **.NET 6** 构建的高性能、模块化 Web API 框架。项目集成了企业级开发常用的基础设施和中间件,旨在提供开箱即用的开发体验。 ### 核心特性 * **ORM**: 集成 **Entity Framework Core 7**,支持 **SQL Server** 和 **MySQL** 数据库,可通过配置灵活切换。 * **Code First**: 支持自动化数据库迁移 (Migrations),应用启动时自动同步数据库结构。 * **依赖注入**: 使用 **Autofac** 替代原生 DI 容器,支持自动注入和更灵活的生命周期管理。 * **认证授权**: 集成 **JWT (JSON Web Token)** 认证机制,支持基于策略的权限控制。 * **API 文档**: 集成 **Swagger** (Swashbuckle),支持在线调试接口。 * **缓存**: 集成 **Redis** (StackExchange.Redis) 和内存缓存,提供统一缓存接口。 * **消息队列**: 集成 **RabbitMQ**,支持异步消息处理。 * **日志**: 集成 **NLog**,支持灵活的日志配置和输出。 * **工具库**: 包含微信支付 SDK (SKIT.FlurlHttpClient.Wechat.TenpayV3) 等常用工具。 ## 项目结构 * **Project.Core.Api**: Web API 入口项目,包含控制器、启动配置 (`Program.cs`) 和 `appsettings.json`。 * **Project.Core.Config**: 核心基础设施层,包含所有中间件配置(数据库、缓存、MQ、Swagger等)、通用工具类和扩展方法。 * **Project.Core.Test**: 示例与测试模块,包含示例实体、DTO、Service 和 Controller,可作为开发参考。 * **Sql**: 包含数据库初始化脚本 (`mysql.sql`, `sqlserver.sql`)。 ## 快速开始 ### 1. 环境准备 * .NET 6 SDK * SQL Server 或 MySQL 数据库 * Redis (可选,如需测试缓存功能) * RabbitMQ (可选,如需测试消息队列功能) ### 2. 数据库配置 1. 打开 `Project.Core.Api/appsettings.json` 文件。 2. 修改 `DatabaseProvider` 以选择数据库类型 (`SqlServer` 或 `MySql`)。 3. 修改 `ConnectionStrings` 下对应的连接字符串。 ```json "ConnectionStrings": { "MySqlConnection": "server=localhost; database=testcore6; user ID=root; password=your_password; port=3306; sslmode=none; CharSet=utf8", "DBConnection": "server=localhost; database=testcore6; user ID=sa; password=your_password; Encrypt=True; TrustServerCertificate=true;" }, "DatabaseProvider": "SqlServer" // 修改为 "MySql" 以使用 MySQL ``` ### 3. 其他配置 #### 缓存配置 (Redis/Memory) 项目支持通过配置无缝切换缓存实现(Redis 或 内存缓存)。 在 `appsettings.json` 中修改 `CacheProvider`: ```json "CacheProvider": "Memory", // 可选值: "Redis", "Memory" ``` * **Memory**: 使用本地内存缓存(默认),无需额外安装。 * **Redis**: 使用 Redis 缓存。需配置 `RedisConfig` 节点,并确保 Redis 服务已启动。 #### 消息队列配置 (RabbitMQ) 项目集成了 RabbitMQ,并提供了开关配置。 在 `appsettings.json` 中修改 `MqEnabled`: ```json "MqEnabled": false, // true: 开启 MQ; false: 关闭 MQ ``` * 开启后需配置 `MqConfig` 节点,并确保 RabbitMQ 服务已启动。 #### JWT 配置 在 `appsettings.json` 中修改 `JwtConfig` 节点(建议在生产环境中修改 `SigningKey`)。 ### 4. 运行项目 1. 在 Visual Studio 中打开 `Project.Core.Api.sln`。 2. 将 `Project.Core.Api` 设置为启动项目。 3. 按 `F5` 运行。 4. 项目启动时会自动执行数据库迁移 (`app.UseDbSync()`),将最新的实体结构应用到数据库。 5. 浏览器将自动打开 Swagger UI 页面 (通常是 `https://localhost:端口/swagger`)。 ## 开发指南 ### 数据库迁移 (Code First) 本项目使用 EF Core Code First 模式管理数据库。当您修改了实体类(Entity)后,请按照以下步骤更新数据库: 1. **修改实体**: 在代码中修改 Entity 类(例如添加、删除属性)。 2. **生成迁移**: 在项目根目录下运行以下命令(需安装 `dotnet-ef` 工具): ```bash dotnet ef migrations add --project Project.Core.Config --startup-project Project.Core.Api ``` *例如: `dotnet ef migrations add AddUserAge`* 3. **应用迁移**: * **自动方式**: 直接运行项目,程序启动时会自动检测并应用未执行的迁移。 * **手动方式**: 运行命令 `dotnet ef database update --project Project.Core.Config --startup-project Project.Core.Api` ### 添加新模块 1. 建议新建一个类库项目(例如 `Project.Core.Business`)来存放业务逻辑。 2. 在 `Project.Core.Api/appsettings.json` 的 `ExternalAssembly` 数组中添加新项目的程序集名称,以便框架自动扫描并注册服务。 ```json "ExternalAssembly": [ "Project.Core.Config", "Project.Core.Test", "Project.Core.Business" // 新增的业务模块 ] ``` 3. 参考 `Project.Core.Test` 项目中的代码编写 Entity, Service, Controller。 ### 常用功能 * **接口鉴权**: 在 Controller 或 Action 上添加 `[Authorize]` 特性即可开启 JWT 验证。 * **依赖注入**: 只要您的 Service 类以 `Impl` 结尾并实现对应接口,Autofac 会自动注册。