C# ASP.NET Core 6 Web API:发布到 api 会截断超过 5mb 的大文件上的 base64 字符串的最后一部分

问题描述 投票:0回答:1

我正在使用 .NET 6 并通过 Swagger 或 Postman 发布到此方法:

[HttpPost]
[Route("Test")]
public async Task<IActionResult> Test([FromBody] OrderData data)
{
    return Ok();
}

public class OrderData
{
    public string DocumentData { get; set; }
}

将 JSON 发布到此端点,其中的 base64 很大,导致底部被截断。

数据大小超过10mb。

我尝试将其更改为字符串和动态类型,而不是具有相同结果的对象。

c# base64 .net-6.0
1个回答
0
投票

看起来您可以在此处尝试或组合多种方法。 从.NET方面来看: 您可以用以下方式装饰该方法:

[RequestSizeLimit(104857600)] // 100MB for example

虽然默认大小约为 30mb,但请检查参考

另外,我建议使用流读取器作为另一个选项,而不是全部反序列化,例如:

public async Task<IActionResult> Test()
{
    using (var reader = new StreamReader(Request.Body))
    {
        var body = await reader.ReadToEndAsync();
        // You can then process the body data here.
        return Ok();
    }
}

如果这不起作用,问题可能出在您正在使用的工具上,在本例中是 Postman,有时它可能会超时或在负载较大时表现奇怪。

您可以尝试修改请求超时,进入设置 > 常规 > 请求超时(以毫秒为单位),或者您可以访问此页面以获得更好的指南:如何在 postman 中设置请求超时

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.