gpt4 book ai didi

c# - 当数据过大时,发布请求不起作用 .net 核心 web api

转载 作者:行者123 更新时间:2023-12-04 15:41:43 24 4
gpt4 key购买 nike

net核心web api项目

我有一个 post 请求方法,它必须与很多实体一起工作

如果我使用发送 20.000 或 30.000 个实体,这不是问题方法有效,但如果我发送太大的数据示例 100.000 80.000 甚至没有进入方法并返回未找到给客户端

我该怎么办?

这是我的方法

[HttpPost]
[DisableRequestSizeLimit]
public async Task<IActionResult> ArchivePlugs([FromBody] ArchivePlugs model)
{
try
{
await _archivePlugsRepository.AddSynchronizeAsync(model.Archive_Plugs);
await _archivePlugProductRepository.AddSynchronizeAsync(model.Archive_PlugProduct);
await _archivePlugTaxsRepository.AddSynchronizeAsync(model.Archive_PlugTax);*/

return OkResult();
}
catch
{
return BadRequestResult();
}
}

我尝试了什么?

[DisableRequestSizeLimit]

services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
options.SerializerSettings.ContractResolver = CustomContractResolver.Instance;
});

并删除 [frombody] 标签并在此方法中使用

 using (var reader = new StreamReader(Request.Body))
{
var body = reader.ReadToEnd();

ArchivePlugs results = JsonConvert.DeserializeObject<ArchivePlugs>(body);

}

但它们都不起作用

最佳答案

如果您使用的是 IIS 服务器,则需要在 web.config 文件中设置 requestLimits:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- 4294967295 bytes (4 GiB) is the maximum value-->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>

您还可以在 StartUp 类中设置 FormOptions:

public void ConfigureServices(IServiceCollection services)
{
// Set limits for form options, to accept big data
services.Configure<FormOptions>(x =>
{
x.BufferBody = false;
x.KeyLengthLimit = 2048; // 2 KiB
x.ValueLengthLimit = 4194304; // 32 MiB
x.ValueCountLimit = 2048;// 1024
x.MultipartHeadersCountLimit = 32; // 16
x.MultipartHeadersLengthLimit = 32768; // 16384
x.MultipartBoundaryLengthLimit = 256; // 128
x.MultipartBodyLengthLimit = 134217728; // 128 MiB
});

// Add the mvc framework
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

...

} // End of the ConfigureServices method

另一种选择是发送较小的 ArchivePlugs block 。

关于c# - 当数据过大时,发布请求不起作用 .net 核心 web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57622312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com