首页 > 解决方案 > 我可以在 .Net 5.0 中将请求正文作为字符串获取吗?

问题描述

我们有一个 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;
        } 

标签: c#json.nethttppost

解决方案


您可以阅读控制器流程之外的正文。但首先,您应该激活请求正文缓冲。在类的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();

推荐阅读