企业内网 Web Forms 门户平台。fork 自 Codeplex 上的 ASP.NET Portal Starter Kit,在其基础上补齐了权限与数据范围、流程状态机、审计、模块包治理、主题治理与自动化门禁。
当前版本:v0.7.0。成熟度定位为 可用 / 参考 / 研究基线,尚未取得真实生产环境证据,不宣称生产级可信(口径约束见 版本策略)。
Enterprise intranet portal platform on ASP.NET Web Forms, forked from the original ASP.NET Portal Starter Kit on Codeplex and extended with permission and data-scope enforcement, workflow state machines, auditing, module package governance, theme governance, and an automated gate suite.
Current version: v0.7.0. Maturity is stated as usable / reference / research baseline — no production-environment evidence yet, so production-grade reliability is not claimed.
| 能力 | 说明 |
|---|---|
| 身份与授权 | 账户注册、角色权限实体授权、按组织子树的数据范围控制、认证角色 Cookie |
| 流程状态机 | 业务申请与协同事项的显式迁移表,写入前 fail-closed,迁移必写事件 |
| 审计 | 运营审计表、审计保留期策略、日志维护与归档 |
| 模块包治理 | 受信任模块包(module.json)的注册、启停、移除与边界校验 |
| 主题治理 | 主题包契约校验与回退 |
| 业务模块 | 6 个受信任模块包:员工目录、待办工作台、员工资料确认 / 更正、业务申请 |
| 国际化 | 中文 / 英文双语资源,强类型资源键,资源契约门禁 |
| 自动化门禁 | 14 个门禁统一编排,按 L0/L1/L2 分层,退出码与输出双判定 |
- Windows;Visual Studio 2022 或可构建 .NET Framework 4.8 的 Visual Studio / Build Tools
- .NET Framework 4.8 Developer Pack
- SQL Server 或 SQL Server LocalDB
- IIS Express
- NuGet 包还原能力(NuGet CLI,或使用 Visual Studio 的 NuGet Restore)
Node.js 与 npm 仅在需要维护前端资源构建时需要。
powershell -NoProfile -ExecutionPolicy Bypass -File dev\scripts\Restore-NuGetPackages.ps1复制模板并修改 Portal 连接串:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\Web\HIA-ASPNETPortal\dev" | Out-Null
Copy-Item src\Portal\Config\Templates\connectionStrings.config "$env:USERPROFILE\Web\HIA-ASPNETPortal\dev\connectionStrings.config"为什么必须在仓库外:连接串含凭据,放在仓库内会被提交或误打包。仓库只提供模板。这是安全要求,不是配置负担。
& 'C:\Program Files\PowerShell\7\pwsh.exe' -NoLogo -NoProfile -File dev\scripts\Initialize-PortalTestDatabase.ps1 -ConnectionStringsConfigPath "$env:USERPROFILE\Web\HIA-ASPNETPortal\dev\connectionStrings.config"脚本按 Portal_CreateDB.sql → Portal_LoadConfig.sql → Portal_LoadData.sql → 后续幂等迁移的顺序执行。手工执行顺序与逐脚本说明见 开发指南。
powershell -NoProfile -ExecutionPolicy Bypass -File dev\scripts\Build-Solution.ps1 -Configuration Debug -Platform "Any CPU"脚本通过 dev\scripts\Find-MsBuild.ps1 自动定位 MSBuild。
以 src/Portal 为站点、端口 40001 启动 IIS Express,然后访问 http://localhost:40001/。
VSCode 用户可直接运行任务 iisexpress: start Portal (40001)。
& 'C:\Program Files\PowerShell\7\pwsh.exe' -NoLogo -NoProfile -File dev\scripts\Invoke-PortalGateSuite.ps1分层执行(All / L0 / L1 / L2):
| 层 | 依赖 | 内容 |
|---|---|---|
| L0 | 仅源码 | XML 文档、资源契约、版本一致性、旧版 CSS 兼容、ASCX 编译契约、对标检查表 |
| L1 | 构建后 | 构建、单元测试、5 个业务模块冒烟 |
| L2 | 需站点 | 模块运行期加载(按档位分组,自动发现模块目标) |
脚本会自动切换配置档位并在结束时还原,无需手工改配置。
完整文档索引见 docs/README.md。常用入口:
| 我想… | 看这份 |
|---|---|
| 了解系统结构与模块划分 | 架构说明 |
| 本地开发、构建、配置、调试 | 开发指南 |
| 开发一个模块包 | 模块开发指南 |
| 运行和使用门户 | 使用指南 |
| 部署上线 | 部署清单 |
| 发布与回滚 | 回滚指南、版本策略 |
| 跑测试与发布前检查 | 测试清单 |
| 默认账号与凭据治理 | 默认凭据治理 |
| 新增第三方依赖 | 第三方依赖约定 |
请阅读 CONTRIBUTING.md。提交 Issue 或 PR 前请先确认门禁通过:
& 'C:\Program Files\PowerShell\7\pwsh.exe' -NoLogo -NoProfile -File dev\scripts\Invoke-PortalGateSuite.ps1 -Layer L0MIT。fork 自 ASP.NET Portal Starter Kit,其许可与归属见 README-old.md。
本项目在 ASP.NET 领域起步于 MVC 之前的时代。随着前后端分离成为主流,纯 Web Forms 开发模式日渐式微,但由于运行环境老旧与既有项目体系的延续,它在企业内网快速开发场景中仍然适用 —— 大量同类项目如 DNN、mojoportal、C1-CMS、CarrotCakeCMS 均延续了这一选择。