ASP.NET Core 5.0 Web API部署遇HTTP 404错误,求排查方案
确认ASP.NET Core托管模块已安装
Server 2019默认不会预装ASP.NET Core的IIS托管模块,需要安装对应版本的ASP.NET Core Runtime或托管捆绑包(Hosting Bundle)。没有这个模块,IIS无法将请求转发给.NET Core应用,直接返回404。核对物理路径的拼写与一致性
你提到发布文件在D:\Sites\WebSite\Mailer,但IIS应用指向的是D:\Sites\Websites\Mailer,注意WebSite和Websites的拼写差异,物理路径不匹配会导致IIS找不到应用文件,触发404。验证API路由与虚拟路径配置
- 确保控制器的路由前缀与期望访问路径匹配,比如目标端点是否标记了
[Route("mailer/pdfmaker")],或者启动时的全局路由配置是否正确。 - 检查IIS中创建的
Mailer应用虚拟路径是否为/mailer,只有这样访问website.com/mailer/pdfmaker才会映射到该应用下的API端点。
- 确保控制器的路由前缀与期望访问路径匹配,比如目标端点是否标记了
检查应用池权限
传递身份验证模式下,应用池的身份(默认是ApplicationPoolIdentity)需要拥有对D:\Sites\Websites\Mailer目录的读取和执行权限。权限不足会导致应用无法加载,表现为404错误。查看ASP.NET Core应用日志
在服务器上启用应用日志排查启动问题:- 修改
web.config,将stdoutLogEnabled设为true,指定日志路径:<aspNetCore processPath=".\YourApiName.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> - 手动创建
logs目录,访问API后查看日志文件,里面会记录应用启动失败的具体原因(比如依赖缺失、配置错误)。
- 修改
确认部署文件完整性
如果是self-contained模式部署,确保所有发布生成的文件(包括.exe、DLL、配置文件、静态资源等)都完整复制到服务器目录,遗漏关键文件会导致应用无法启动。检查web.config的ASP.NET Core配置
确认web.config中的processPath指向正确的应用exe文件名,hostingModel设置合理(.NET5推荐inprocess)。如果该配置错误,IIS无法正确启动.NET Core应用。
内容的提问来源于stack exchange,提问作者Musical Coder

