前端托管
本页是 ClientApp 和多前端入口托管的主题页,聚合目录、路径、缓存和后端保护约定。正式规则请优先阅读 框架规范 / 前端项目规范 和 框架规范 / 前端对接规范。
适用场景
- 与后端一起部署一个或多个前端应用。
- 需要通过 ASP.NET Core 中间件统一托管静态资源与默认页。
- 需要在前端入口前后插入鉴权、缓存或网关逻辑。
必须遵守
- 所有前端构建产物都位于明确的
RootPath下。 - 每个应用显式声明
PublicPath、DistPath,且路径以/开头。 UseClientApp()放在明确的请求管道位置。- 敏感前端入口的保护由后端或网关负责,不依赖前端路由。
- 新前端项目的样式栈、图标库、主题模式和项目级包源默认值必须与 前端项目规范 保持一致。
- 前端对接的 JSON 字段和时间格式必须与正式前端契约规范保持一致。
- 缓存策略以当前框架实现为准,不把默认行为误写成长期缓存。
UseClientApp()前后涉及的认证、审计和反向代理规则必须在文档中写清楚。
推荐做法
- 每个前端应用使用独立
PublicPath。 - 发布目录按应用划分,例如
ClientApp/Admin、ClientApp/Portal。 - 需要登录保护的入口,在
UseClientApp()前后明确插入认证授权或网关保护。 - 统一通过反向代理暴露外部路径,不在构建产物里硬编码运行环境 URL。
- 本地联调用开发代理,生产环境只保留发布目录和路径映射。
常见坑
- 多个前端构建产物铺在同一目录。
PublicPath用相对路径。UseClientApp()放在会吞掉 API 请求的位置。- 认为“前端有登录页”就等于入口安全。
真实用例
- gmandarin-backend:同一站点托管多个前端入口,并与自定义
UseStaticFiles(...)缓存策略并存。