# ASP.NET Core 10 迁移 系统业务 API、认证、管理后台、审批流、考务编排、招生录取、Excel、文书和缓存均已迁移到 ASP.NET Core 10。生产宿主和容器不再启动或转发到 Node.js;旧 `.mjs` 服务端源码仅保留作历史行为对照。 ## 完成情况 - [x] ASP.NET Core 10 分层解决方案与前端静态资源托管 - [x] 公开首页、公告、招生公示和 HMAC 文书验真 - [x] 登录、自主注册、Session、TOTP 和考生中心 - [x] 管理后台、审批流、考务编排和成绩管理 - [x] 指标资格、招生账户、志愿、计划、投档、录取、报到和退档 - [x] ClosedXML 文件导入导出、文书模板和 Redis/本机缓存 - [x] SQLite / MySQL 自动建库和基础配置初始化 - [x] 容器入口切换及 Node.js 后端运行依赖移除 ## 本地运行 需要 .NET 10 SDK: ```powershell dotnet restore .\Eis.slnx dotnet run --project .\src\Eis.Web\Eis.Web.csproj ``` 浏览器访问 。首次启动空库时,系统会建立 v20 结构、基础规则、默认审批流程和初始超级管理员。 - `GET /health/live`:ASP.NET Core 宿主存活检查。 - `GET /health/migration`:原生功能、认证状态后端和缓存状态;`legacyApiRemoved` 固定为 `true`。 - 未注册的 `/api/*` 返回原生 `404`,不再转发旧服务。 `appsettings.json` 已默认启用全部原生域,无需再设置 `AUTH_NATIVE_ENABLED`、`CANDIDATE_NATIVE_ENABLED` 或 `ADMIN_NATIVE_*` 迁移开关。Redis 为可选项;单实例使用进程内会话和有界本机缓存,多实例部署应配置 Redis 共享会话。 ## 已迁移的文件与文书能力 - ClosedXML 处理班级、管理员、报名号、考生、缴费、考点考场、成绩、志愿、录取、报到和正式录取名册工作簿。 - 成绩导入先预检再确认,报到导入按招生学校和可维护批次限定范围。 - 录取通知书模板由原生接口保存;成绩单、准考证和录取通知书的数据及防伪验真均由 ASP.NET Core 提供。 - CKEditor 浏览器资源已随 Web 项目发布,不依赖 `node_modules`。 ## 验证 ```powershell dotnet test .\Eis.slnx dotnet publish .\src\Eis.Web\Eis.Web.csproj -c Release pwsh.exe -NoLogo -NoProfile -NonInteractive -File .\scripts\smoke-dotnet-native.ps1 docker compose up --build --detach ``` `scripts/smoke-dotnet-native.ps1` 会发布并启动纯 .NET 产物,在操作系统临时目录创建一次性 SQLite 数据库,检查健康状态、首页、CKEditor、原生登录和未知 API 404 后清理。`scripts/smoke-dotnet-migration.ps1` 保留为迁移期 Node/.NET 行为对照工具,不属于生产启动链路。