為什么在使用 Postman 測驗 ASP.NET CORE 最小 API 應用程式時收到 400 個錯誤請求?
默認 VS 2022 ASP.NET 核心最小 API 專案,具有以下方法處理程式:
app.MapPost("/test", (AnalizeSentenceRequest r) =>
{
return Results.Ok($"Echo: {r.Sentence}");
});
DTO:
public class AnalizeSentenceRequest
{
public string? Sentence { get; set; }
}
Windows 10 或 Ubuntu 卷曲作業正常:
> curl -X POST http://localhost:5050/test -H "Content-Type: application/json" -d "{\"sentence\":\"testing\"}"
回復:
“回聲:測驗”
但是郵遞員得到 400:

郵遞員標頭:

編輯:郵遞員回復:
它抱怨它無法系結到 DTO AnalizeSentenceRequest r
我嘗試將 [FromBody] 屬性添加到處理程式:
([FromBody] AnalizeSentenceRequest r) => ...
但這沒有什么區別。
雖然它適用于卷曲......所以看起來郵遞員正在搞亂身體,但它可能是什么?
完整回復:
Microsoft.AspNetCore.Http.BadHttpRequestException: Required parameter "AnalizeSentenceRequest r" was not provided from body.
at Microsoft.AspNetCore.Http.RequestDelegateFactory.Log.RequiredParameterNotProvided(HttpContext httpContext, String parameterTypeName, String parameterName, String source, Boolean shouldThrow)
at lambda_method1(Closure , Object , HttpContext , Object )
at Microsoft.AspNetCore.Http.RequestDelegateFactory.<>c__DisplayClass46_3.<<HandleRequestBodyAndCompileRequestDelegate>b__2>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
HEADERS
=======
Accept: */*
Host: localhost:5050
Content-Type: application/json
uj5u.com熱心網友回復:
在 Postman 中勾選 Content-Length 復選框。原因是 Content-Length 標頭對于具有物體主體的訊息是強制性的,除非使用分塊編碼傳輸訊息。需要 Content-Length 來檢測服務器崩潰時過早的訊息截斷,并正確分割共享持久連接的訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410252.html
標籤:
