ASP.NET Core 5 WebAPI生产环境IIS部署后返回404错误咨询
排查解决步骤
- 先确认.NET托管捆绑包安装状态
生产环境安装完.NET 5.0.11托管捆绑包后必须重启IIS(或直接重启服务器),否则AspNetCoreModuleV2不会生效,直接导致所有请求404。安装后可以在IIS的「模块」列表里查有没有AspNetCoreModuleV2,确认模块正常加载。 - 核对IIS站点与应用池配置
- 确认应用池的.NET CLR版本设置为「无托管代码」,托管管道模式为「集成模式」
- 确认应用池的服务账户对站点根目录有读取、执行权限,权限不足会导致程序无法启动,返回404
- 确认你访问的路径和部署方式匹配:如果是部署在IIS站点根目录,访问路径为
http://生产IP:99/WeatherForecast;如果是部署在站点子应用下,路径需要加上子应用前缀,同时需要修改Startup里的Swagger端点配置适配子路径
- 查看程序启动日志排查启动异常
把web.config里aspNetCore节点的stdoutLogEnabled属性改为true,在站点根目录手动新建logs文件夹,重启应用池后再访问一次接口,查看logs文件夹下生成的日志,确认是否是程序启动失败(比如配置文件缺失、运行时依赖不足等问题都会导致程序启动中止,所有接口返回404) - 排查IIS规则与端口冲突
检查生产环境IIS有没有全局URL重写规则拦截了当前站点的请求,同时确认99端口没有被其他程序占用,也没有被服务器防火墙拦截。可以直接在生产服务器本地访问localhost:99/WeatherForecast验证,如果本地访问也404可以排除网络层面的问题。 - 临时切换托管模型验证
把web.config里aspNetCore节点的hostingModel改为outofprocess,重启应用池后再访问,进程外托管模式下如果程序启动异常会返回具体报错信息,方便定位问题。
内容的提问来源于stack exchange,提问作者G L
相关产品推荐
相关产品推荐

