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

.NET 7 Minimal API始终返回200状态码,求解决方法?

问题原因及解决办法

第一个代码段的核心问题

你第一个端点的lambda表达式只是调用了Results.NoContent(),但没有返回这个结果。因为该lambda的返回类型是Task(未声明返回Task<IResult>),Minimal API会默认返回200 OK状态码。

修正方式:添加return关键字,同时指定lambda的返回类型为Task<IResult>:

app.MapPost("/api/test", async Task<IResult> (HttpContext context) =>
{
    var form = await context.Request.ReadFormAsync();
    var file = form.Files["File"];
    return Results.NoContent();
});

第二个代码段的潜在问题

你的第二种写法(单独定义返回Task<IResult>的方法)本身是符合规范的,如果仍然返回200,大概率是以下原因之一:

  • 代码未生效:修改代码后未重新编译、重启服务,请求仍命中旧版本代码。
  • 路由未匹配:请求的URL或HTTP方法与定义的端点不匹配,实际命中了其他默认返回200的端点。
  • 中间件篡改响应:项目中存在全局中间件(如异常处理、日志中间件等),在后续流程中强制修改了响应状态码为200。

你可以先在TestReturn方法中添加日志输出,验证请求是否真的命中该端点。若确认代码执行但状态码仍异常,检查启动类的中间件配置,排查是否有修改响应的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:46:01