ASP.NET Core:记录所有请求(读取两次请求体)EnableRewind对[FromBody]属性不起作用。
创始人
2024-09-16 05:00:45
0

在ASP.NET Core中,默认情况下,请求体只能读取一次。但有时候我们需要能够多次读取请求体,特别是在使用FromBody属性时。在这种情况下,可以使用EnableBuffering和EnableRewind方法来解决此问题。

下面是一个解决方法的代码示例:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using System.IO;

namespace YourNamespace.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class YourController : ControllerBase
    {
        [HttpPost]
        public IActionResult Post()
        {
            // 启用请求体缓冲
            Request.EnableBuffering();

            // 读取请求体
            using (StreamReader reader = new StreamReader(Request.Body))
            {
                string requestBody = reader.ReadToEnd();
                // 在这里可以对请求体进行处理
            }

            // 复位请求体
            Request.Body.Position = 0;

            // 重新读取请求体
            using (StreamReader reader = new StreamReader(Request.Body))
            {
                string requestBodyAgain = reader.ReadToEnd();
                // 在这里可以对请求体进行处理
            }

            // 返回响应
            return Ok();
        }
    }
}

在上面的示例中,我们首先启用了请求体的缓冲,然后通过StreamReader读取了请求体的内容。然后,我们将请求体的位置复位为0,以便后续可以重新读取。最后,我们再次使用StreamReader读取请求体的内容。

通过这种方式,我们就能够在使用FromBody属性的情况下,多次读取请求体的内容了。

相关内容

热门资讯

透视解迷!uupoker有透视... 透视解迷!uupoker有透视吗(透视)德普之星透视,教程妙招(有挂教学)-哔哩哔哩1、透视解迷!u...
透视开挂!wepokerplu... 透视开挂!wepokerplus透视脚本免费(透视)德普辅助软件,教程手册(真实有挂)-哔哩哔哩1、...
透视解谜!德普之星辅助器app... 透视解谜!德普之星辅助器app(透视)拱趴大菠萝开挂方法,教程技法(证实有挂)-哔哩哔哩1)拱趴大菠...
透视解迷!pokerrrr2辅... 透视解迷!pokerrrr2辅助(透视)哈糖大菠萝攻略,教程方案(有挂秘诀)-哔哩哔哩1、哈糖大菠萝...
透视解谜!WePoKer辅助器... 透视解谜!WePoKer辅助器(透视)wepoker私人局俱乐部辅助,教程积累(有挂规律)-哔哩哔哩...
透视开挂!sohoo竞技联盟辅... 透视开挂!sohoo竞技联盟辅助器(透视)德州局透视脚本免费版下载手机版,教程妙计(有挂神器)-哔哩...
透视揭幕!aapoker能控制... 透视揭幕!aapoker能控制牌吗(透视)epoker底牌透视,教程资料(确实有挂)-哔哩哔哩1、玩...
透视分享!wepoker有辅助... 您好,wepoker有辅助器吗这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
透视推荐!wepoker软件辅... 透视推荐!wepoker软件辅助程序(透视)wepoker软件辅助程序,教程烘培(有挂解密)-哔哩哔...
透视科普!hhpoker是正规... 透视科普!hhpoker是正规的吗(透视)hhpoker辅助器视频,教程窍要(详细教程)-哔哩哔哩1...