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

ASP.NET Core Minimal API 为何返回200而非指定的204状态码?

问题引发原因
  • 委托签名处理逻辑冲突:当你在Minimal API的处理委托中显式注入HttpContext作为参数时,部分版本的ASP.NET Core框架会默认判定你将自主处理响应的写入逻辑,不会自动执行你返回的StatusCodeResult对象的ExecuteAsync方法。你返回的StatusCodeResult对象会被默认序列化器当作普通响应体进行JSON序列化,框架会自动给这类序列化响应分配默认的200状态码,你设置的204状态码不会生效。
  • 返回结果的执行逻辑未触发:你当前的写法返回的是Task<StatusCodeResult>类型,在绑定了HttpContext的委托中,框架不会自动解析执行该结果对象的状态码配置。如果要保留HttpContext参数,需要直接操作HttpContext.Response对象设置状态码,示例代码如下:
app.MapGet("/api/alive", (HttpContext context) => 
{
    context.Response.StatusCode = 204;
    return Task.CompletedTask;
});
  • 如果你不需要操作HttpContext的其他属性,更推荐直接使用无HttpContext参数的委托写法,框架会自动执行返回的IResult配置,示例代码如下:
app.MapGet("/api/alive", () => Results.NoContent());
  • 版本已知Bug:ASP.NET Core 6.0的最初发行版存在部分Minimal API结果绑定的已知Bug,如果你使用的是6.0.0版本,升级到更高的补丁版本即可解决这类异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:27:03