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

.NET可作为Windows服务运行的控制台应用REST API请求返回404,提示请求未被应用代码处理

.NET可作为Windows服务运行的控制台应用REST API请求返回404,提示请求未被应用代码处理

嘿,我看你遇到的问题挺典型的——做了个能当Windows服务跑的控制台应用,也搭了REST API,但请求http://localhost:5000/api/v1/article/1就是返回404,还提示请求走到中间件管道末尾都没被应用代码处理。我来给你拆解下问题和解决办法:

首先看你贴的Program.cs代码,你已经通过builder.Services.AddControllers()注册了控制器相关服务,但最关键的一步没做:在应用的中间件管道里配置路由和控制器的端点映射。.NET的中间件是按顺序执行的,如果没把控制器的端点映射加进去,请求根本到不了你的API控制器代码里,自然就会走到管道末尾返回404。

你需要把Program.cs补全中间件配置,修改后的大致结构应该是这样:

using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

builder.Configuration
    .AddJsonFile("schedules.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables();

var config = builder.Configuration;

builder.Services.AddDbContext<MyApp.DAL.DataContext>(options =>
    options.UseSqlServer(config.GetConnectionString("mydbconn"), b => b.MigrationsAssembly("MyApp.DAL")));

builder.Services.AddWindowsService();
builder.Services.AddControllers();

// 这里如果还有没写完的服务注册(比如你写了一半的AddTra...),正常保留就行

var app = builder.Build();

// 👇 这部分就是你大概率缺失的中间件配置
app.UseRouting();

// 如果你的API需要授权,就加上这行;不需要的话可以跳过
// app.UseAuthorization();

// 把控制器的端点映射到中间件管道里,让请求能找到对应的API方法
app.MapControllers();

app.Run();

为啥这步这么重要?因为AddControllers()只是把控制器的服务注册到了依赖注入容器里,但并没有告诉应用“要把进来的请求路由到控制器的API上”。只有通过MapControllers(或者配合UseRouting一起用),才能让请求被正确引导到你的/api/v1/article/1对应的控制器方法上。

另外还要多检查一步:你的Article控制器类有没有正确加路由特性?比如应该是类似这样的结构:

[ApiController]
[Route("api/v1/[controller]")]
public class ArticleController : ControllerBase
{
    [HttpGet("{id}")]
    public IActionResult GetArticle(int id)
    {
        // 这里写你的业务逻辑
        return Ok(new { Id = id, Title = "测试文章" });
    }
}

要是控制器上的[Route]或者方法上的[HttpGet("{id}")]配置错了,和你请求的URL不匹配,也会导致找不到处理方法返回404。

总结下你要做的两件核心事:

  • 在Program.cs里补全中间件的端点映射配置(也就是app.MapControllers()这部分)
  • 确认API控制器和方法上的路由特性和你请求的URL完全匹配

备注:内容来源于stack exchange,提问作者Val

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:55:30