.NET 8项目部署Windows 2022服务器IIS启动报错HTTP Error 500.37
解决HTTP Error 500.37 - ASP.NET Core应用程序启动超时问题
1. 确认服务器已安装匹配的.NET运行时
- 必须安装ASP.NET Core Runtime 8.x(而非仅SDK),这是托管.NET 8应用的必要组件
- 打开命令提示符,执行
dotnet --list-runtimes查看已安装运行时,确保存在Microsoft.AspNetCore.App 8.x条目
2. 延长IIS应用池启动超时
- 打开IIS管理器,找到目标应用池,右键选择「高级设置」
- 在「进程模型」板块,将启动时间限制从默认90秒调高(建议设为300秒)
- 同步检查「闲置超时」设置,避免应用被过早回收导致重复启动
3. 排查应用启动异常细节
- 启用详细日志:修改项目
appsettings.json,将日志级别设为Debug{ "Logging": { "LogLevel": { "Default": "Debug", "Microsoft.AspNetCore": "Debug" } } } - 查看Windows事件查看器:进入「Windows日志 > 应用程序」,筛选来源为
ASP.NET Core 8.0的事件,获取启动失败的具体报错 - 本地直接运行应用:进入部署目录,执行
dotnet 你的应用程序.dll,观察控制台输出的错误信息,快速定位代码或配置问题
4. 调整IIS应用池基础配置
- 确保应用池「托管管道模式」设置为集成,.NET Core应用不支持经典模式
- 检查应用池「身份」权限:确保该账号能访问项目文件、数据库及其他依赖资源
- 验证外部服务连通性:如果应用依赖数据库、Redis等服务,确认服务器网络能正常连接,高延迟也会触发启动超时
5. 检查ASP.NET Core模块配置
- 确认服务器已安装ASP.NET Core托管捆绑包,这是IIS托管.NET Core应用的核心组件
- 验证站点
web.config的aspNetCore节点配置:<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> - 开启stdout日志:将
stdoutLogEnabled设为true,部署后查看logs目录下的日志文件,获取启动过程的完整输出
内容的提问来源于stack exchange,提问作者Post Impatica
相关产品推荐
相关产品推荐

