ASP NET Core Minimal API 总是返回 200 而不是指定的 204

Posted

技术标签:

【中文标题】ASP NET Core Minimal API 总是返回 200 而不是指定的 204【英文标题】:ASP NET Core Minimal API always returns 200 instead of specified 204 【发布时间】:2021-09-17 07:31:55 【问题描述】:

即使我说返回 204 (NoContent),它也会返回 200。为什么?

app.MapGet("/api/alive", (context) => Task.FromResult(new StatusCodeResult(204)));

浏览器中的状态码是200

【问题讨论】:

您能否显示更多您的代码,以便我们了解您是如何收到此回复的。通常我希望看到Return NoContent(); 使用 Results.NoContent()、new NoContentResult() 或 new StatusCodeResult(204) 没有区别 你检查documentation了吗?你知道第二个参数的签名(RequestDelegate) 吗?你从哪里得知它有返回类型? 将类型更改为 RequestDelegate 成功了 不要将答案编辑到您的问题中。我已将您的问题回滚到原始版本。 【参考方案1】:

解决方案是稍微更改签名:

app.MapGet("/api/alive", () => Results.NoContent());

(context) 单独不起作用, 编辑:以及(RequestDelegate 上下文)不起作用。

app.MapGet("/api/alive", (context) => Results.NoContent());
app.MapGet("/api/alive", (RequestDelegate context) => Results.NoContent());

【讨论】:

有人知道为什么 RequestDelegate 不起作用吗?

以上是关于ASP NET Core Minimal API 总是返回 200 而不是指定的 204的主要内容,如果未能解决你的问题,请参考以下文章

从 MVC 到使用 ASP.NET Core 6.0 的Minimal API

ASP NET Core Minimal API 总是返回 200 而不是指定的 204

ChatGPT Plugin 插件开发:基于 ASP.NET Core Minimal API

使用 ASP.NET Core 6 Minimal API 在 Azure 中停止 Web 应用程序时未调用 BackgroundService StopAsync

创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中的最小Web API(minimal APIS)新特性

详解 .Net6 Minimal API 的使用方式