我們有一個http服務器。服務器接收帶有 json 正文的 http post 請求。但有時 json 物件無效。在這種情況下,我們希望將 body 讀取為字串。我如何在 .Net 5.0 中實作它。
謝謝。
我的代碼:
[HttpPost]
[Route("api")]
public async Task<string> api([FromBody] string requestContent)
{
// When invalid json request receieve, requestContent is null
return requestContent;
}
uj5u.com熱心網友回復:
您可以在控制器流程之外讀取正文。但首先,您應該激活請求正文緩沖。在類的Configure方法Startup之前使用這個中間件app.UseEndpoints。
app.Use(async (context, next) =>
{
context.Request.EnableBuffering();
await next.Invoke();
});
然后你可以從這樣的任何操作中讀取正文:
Request.Body.Seek(0, SeekOrigin.Begin)
var body = await new StreamReader(Request.Body).ReadToEndAsync();
uj5u.com熱心網友回復:
最好不要將正文作為 json 發送,而應該以字串格式發送。對于您提供的當前代碼片段的示例:
要求 :
"{\"username\":\"ak\", \"password\": \"142437630028jdnj\"}"
回復 :
{"username":"ak", "password": "142437630028jdnj"}
在發送它們之前,您必須將 json 正文決議為字串,如下所示:
JObject.Parse(str);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327259.html
