默认ASP.NET Core Web API项目控制器路由404问题求助
ASP.NET Core Web API 404问题排查方案
Swagger能正常访问说明服务本身运行正常,404错误大概率是URL路径错误或部署/调试配置细节遗漏,结合你提供的默认项目代码,给你几个明确的排查方向:
一、调试阶段的URL正确性检查
- 确认服务实际启动端口:启动项目后查看控制台输出的监听地址(如
Now listening on: https://localhost:5001),API的正确路径应为{监听地址}/WeatherForecast(控制器[Route("[controller]")]会自动去掉Controller后缀,所以路径是WeatherForecast而非WeatherForecastController)。 - 规范
.http文件语法:正确的调试示例如下,确保协议、端口、路径与服务启动信息完全匹配:GET https://localhost:5001/WeatherForecast Content-Type: application/json
二、IIS部署的关键配置修正
- 应用程序池设置:新建的应用程序池必须将**.NET CLR版本设为“无托管代码”**,ASP.NET Core为自托管框架,无需IIS托管环境。
- 物理路径指向:将IIS站点的物理路径设置为项目发布后的
wwwroot文件夹,而非源码文件夹。 - 安装ASP.NET Core模块(ANCM):服务器未安装该模块时,IIS无法将请求转发至ASP.NET Core进程,需通过服务器“添加角色和功能”或对应版本的ASP.NET Core运行时安装包完成部署。
三、其他细节排查
- 检查
launchSettings.json:项目根目录Properties/launchSettings.json中的applicationUrl需配置正确端口,避免端口冲突导致服务自动切换端口未被察觉。 - 避免协议混用:不要同时混用HTTP和HTTPS,比如服务启动在HTTPS端口,却用HTTP地址访问。
补充:可直接在Swagger页面点击「Try it out」测试API,若Swagger内可正常返回结果,说明API逻辑无问题,仅外部访问的URL或配置存在疏漏。
内容的提问来源于stack exchange,提问作者MrFox
相关产品推荐
相关产品推荐

