1.问题
HTTP Error 500.30 - ASP.NET Core app failed to start
2.分析
500.30 - ASP.NET Core app failed to start 是典型的 "IIS 启动前置检查失败" ,属于 500.30 系列的第一个大类错误。
500.30 常见原因(按概率排序)
- Hosting Bundle 未安装 / IIS 未注册 ANCM 模块
- web.config 里 aspNetCore 节写错(arguments、processPath、hostingModel、stdoutLogFile 任一写错)
- IIS Express 调试版 ANCM 没全局版(你本机 IIS 用的 Hosting Bundle 没装全)
- IIS AppPool 身份问题(应用池账号无执行权限)
- 端口冲突(Kestrel 默认 5000,本机 IIS 建站默认 80,偶尔有 80 端口被占用)
- 数据库连不上(500.30 后,程序启动时会抛异常,导致 500.30)
3.改善办法
-
确认 Hosting Bundle 已安装
检查是否已安装
dotnet --list-runtimes
如果没有输出 Microsoft.AspNetCore.App 或 Hosting Bundle,重新下载安装
https://dotnet.microsoft.com/download/dotnet/9.0 → 点 "Hosting Bundle"

安装完成后必须重启 IIS:
iisreset

显示已经安装成功

2.检查链接检查 web.config 内容
<aspNetCore processPath="dotnet" arguments=".\ProjectManager.Web.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
JSON 转义错误
你把连接串改成 Server=xx\MSSQL2025 ------ JSON 里单个 \ 是非法转义符,程序一启动解析配置就崩,这就是 500.30。必须写 \\。
认证方式混用
你的连接串同时写了 User ID=sa;Password=XXXX 和 Trusted_Connection=True。
两者混用时 sa 被忽略 ,实际走 Windows 认证,拿应用池虚拟账号 IIS APPPOOL\PM 去连 SQL,而 SQL 里没给这个账号开登录 → "登录失败"。