You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5默认Web API项目访问WeatherForecast接口返回404求助

ASP.NET Core 5 Web API 404 问题排查方案

你提供的控制器代码本身不存在语法问题:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    [HttpGet]
    public string Get()
    {
        return "test";
    }
}

可按以下步骤逐一排查:

1. 确认服务监听端口与启动配置

  • 首先查看项目启动时控制台输出的监听日志,确认是否存在Now listening on: http://localhost:5000的记录,避免实际启动端口与预期不符
  • 检查项目Properties目录下的launchSettings.json文件,确认对应启动配置的applicationUrl属性是否包含http://localhost:5000
  • 执行命令lsof -i :5000查看5000端口是否被其他进程占用,若存在占用可以修改启动端口或者结束占用进程

2. 检查中间件配置顺序

ASP.NET Core 5 默认使用Startup.cs配置中间件,必须保证中间件顺序符合要求,否则会导致路由无法匹配:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 省略其他前置中间件
    app.UseRouting(); // 必须在UseAuthorization、UseEndpoints之前
    
    app.UseAuthorization();
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers(); // 必须存在,否则不会注册控制器路由
    });
}

如果漏写endpoints.MapControllers()或者UseRouting位置错误,都会直接导致控制器接口返回404。

3. 排查路由规则配置

  • 确认控制器类为public修饰符,且继承自ControllerBase,否则ASP.NET Core不会将其识别为控制器
  • 检查是否配置了全局路由前缀,比如在ConfigureServices中添加了以下配置:
    services.AddControllers(options => 
    {
        options.RoutePrefix = new RouteAttribute("api");
    });
    
    如果配置了全局前缀,需要访问http://localhost:5000/api/weatherforecast才能命中接口
  • 确认是否配置了控制器扫描过滤规则,限制了只有特定命名空间下的控制器会被加载,如果有相关配置需要确保WeatherForecastController在扫描范围内
  • 若手动开启了路由大小写敏感配置,需要注意访问路径大小写与控制器名称匹配,默认配置下路由不区分大小写

4. 验证HTTPS跳转配置

如果项目默认开启了强制HTTPS跳转,访问HTTP端口会被重定向到HTTPS端口(默认5001),可以直接尝试访问https://localhost:5001/weatherforecast验证是否能正常返回结果。

内容的提问来源于stack exchange,提问作者HachDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:45:06