我可以得到请求体作为字符串在.net 5.0?



我们有一个http服务器。服务器接收带有json主体的http post请求。但有时json对象无效。在本例中,我们希望将body读取为string。如何在。net 5.0中实现呢?

谢谢。

My Code:

[HttpPost]
[Route("api")]
public async Task<string> api([FromBody] string requestContent)
{
// When invalid json request receieve, requestContent is null  
return requestContent;
} 

可以在控制器流之外读取主体。但首先,您应该激活请求体缓冲。在Startup类的Configure方法上,在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();

最好是发送json格式的正文,你应该发送字符串格式。对于您提供的当前代码片段的示例:

请求:

"{"username":"ak", "password": "142437630028jdnj"}"

反应:

{"username":"ak", "password": "142437630028jdnj"}

你必须在发送之前将json主体解析为字符串,如下所示:

JObject.Parse(str);

最新更新