将.NET Core项目部署到IIS后所有路由返回500错误且响应为空是什么原因?
.NET WebAPI部署500错误排查步骤
- 第一步:先获取具体报错信息
现有IIS访问日志仅记录了请求基础信息,无应用层错误详情,先做以下配置临时开启详细报错:- 修改项目配置,临时开启生产环境异常页:ASP.NET Core项目可在
Program.cs中临时注释掉if (app.Environment.IsDevelopment())的判断,全局启用开发异常页;非Core项目可修改web.config将<customErrors mode="On"/>改为Off,同时将<httpErrors errorMode="Custom"/>改为Detailed - 开启IIS失败请求跟踪:在IIS站点功能视图中找到「失败请求跟踪规则」,添加针对500状态码的跟踪规则,触发报错后可查看详细的请求处理链路错误
- 开启.NET应用 stdout 日志:修改发布后的
web.config,将stdoutLogEnabled="false"改为true,同时指定stdoutLogFile的存储路径,确保应用程序池标识对该路径有写入权限
- 修改项目配置,临时开启生产环境异常页:ASP.NET Core项目可在
- 第二步:基础运行环境校验
- 确认服务器已安装对应版本的*.NET 托管捆绑包*:仅安装SDK或Runtime无法让IIS正常托管.NET WebAPI,必须安装对应大版本的托管捆绑包
- 检查站点对应应用程序池配置:.NET Core/.NET 5+项目的应用程序池.NET CLR版本需设置为「无托管代码」,.NET Framework项目需选择对应版本的CLR
- 检查文件夹权限:确保应用程序池的运行标识对你的发布文件夹、日志存储路径有读取+写入权限
- 第三步:配置文件校验
- 检查生产环境配置文件
appsettings.json:确认NAV SOAP服务的地址、认证凭据(用户名、密码、域信息)已正确填写,本地开发用的secrets.json或appsettings.Development.json中的配置不会自动同步到生产环境 - 检查SOAP客户端绑定配置:确认Connected Services生成的SOAP客户端的认证模式、超时时间、消息大小限制等配置,在生产环境和本地开发环境一致
- 检查证书验证逻辑:如果NAV SOAP服务使用自签SSL证书,确认生产环境是否配置了跳过证书验证的逻辑,未配置会导致SSL握手失败触发500错误
- 检查生产环境配置文件
- 第四步:NAV对接链路排查
- 登录远程服务器,直接在服务器浏览器中访问NAV SOAP服务的WSDL地址,确认网络连通性,排除防火墙、端口限制、IP白名单等网络问题
- 确认NAV服务端已允许远程服务器的IP访问,且配置的认证账号有对应NAV接口的访问权限
- 第五步:代码日志补充
临时在调用NAV SOAP服务的代码外层添加全量异常捕获,将异常的全栈信息、内部异常、调用参数全部写入本地日志,可直接定位到是调用NAV环节报错还是应用本身启动环节报错
内容的提问来源于stack exchange,提问作者Vala Khosravi
相关产品推荐
相关产品推荐

