Json 对象 Asp.net Core 3.1 的最大长度
Posted
技术标签:
【中文标题】Json 对象 Asp.net Core 3.1 的最大长度【英文标题】:Max Length for Json Object Asp.net Core 3.1 【发布时间】:2021-06-29 15:22:59 【问题描述】:虽然这是大约 2 年前提出的问题,但我仍然面临这个问题,没有办法摆脱它。有没有办法在 Asp.net Core 3.1 中设置 JSON 对象的最大大小?除了 .Net core(或者我可能还没有找到)之外,在其他 .Net 框架中还有其他方法可以做到这一点。
How to Set Max Json Length in .net core
我有长度约为 3k 的 JSON 对象数组,具有大约 20 个对象的同一文件工作正常,但随着我增加大小,控制器方法中的数据变为空(即使在 DOM 中检查时,console.log 也会显示确切的数组对象)。
console.log(candidate_List);
$.ajax(
url: '@Url.Action("Insert_Candidates")',
data: "selected_list": candidate_List ,
type: "POST",
dataType: "json",
async: true,
success: function (response)
alert(response.d);
,
failure: function (response)
alert("fail");
);
[HttpPost]
public async Task<IActionResult> Insert_Candidates([FromForm]List<CandidateDTO> selected_list)
string result = "";
if (ModelState.IsValid)
【问题讨论】:
你有没有尝试过这里的建议:maximum-http-request-size-for-asp-web-api-with-json? 我使用的是 MVC 和 Asp.net webforms,但在这里我在 .net 核心项目中没有 webconfig 文件,我可以在其中添加 MaxRequestLength。 (如果您有知识,请告诉我,我会尝试这种方式) 为什么是[FromForm]
?你是在正文中发送application/json
JSON,还是在正文中发送application/x-www-url-formencoded
表单数据?请参阅:differences in application/json and application/x-www-form-urlencoded 和 Jquery Ajax Posting JSON to webservice。
@RameezJaved 在部署 Asp.Net Core Web 应用程序时,web.config 是自动生成的,您可以将一个添加到您的解决方案中,并且在发布到服务器时仍然会使用它。跨度>
@dbc 我正在发送 json 数据,
【参考方案1】:
感谢所有帮助过我的人,我用我的话表达了解决方案。我在代码中添加了以下内容并实现了目标。
$.ajax(
url: '@Url.Action("Insert_Candidates")',
data: "selected_list": candidate_List,
type: "POST",
dataType: "json",
async: true,
success: function (response)
alert(response.d);
,
failure: function (response)
alert("fail");
);
这里是控制器的方法
[HttpPost]
[RequestFormLimits(ValueCountLimit = int.MaxValue)]
public async Task<IActionResult> Insert_Candidates([FromForm]List<RecuritementDTO> selected_list)
string result = "";
if (ModelState.IsValid)
try
result = count + " rows has been saved";
catch (Exception ex)
//throw;
string message = ex.ToString();
result = ex.Message.ToString();
return Json(new d = result );
在此处启动.cs
services.Configure<FormOptions>(options =>
options.ValueCountLimit = 10; //default 1024
options.ValueLengthLimit = int.MaxValue; //not recommended value
options.MultipartBodyLengthLimit = long.MaxValue; //not recommended value
options.MemoryBufferThreshold = Int32.MaxValue;
);
services.AddMvc(options =>
options.MaxModelBindingCollectionSize = int.MaxValue;
);
这里是 Webconfig 代码(我也添加了这个......可能是它帮助我过桥)
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
这就是我对代码所做的全部更改,并且我已经做到了。我希望这段代码可以帮助我们的堆栈团队成员。 干杯:)
【讨论】:
以上是关于Json 对象 Asp.net Core 3.1 的最大长度的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core 3.1 MVC/WebApi JSON 全局配置
如何从 Asp.NET Core 3.1 启动类访问 launchSettings.json 中的 `applicationUrl` 属性?
ASP.NET Core 3.1 Web Api HttpPost Action 参数无法接收 axios application/json HttpPost 传递数据
在 Azure 应用服务上运行的 ASP.NET Core 3.1 应用针对 1.6 MB json 有效负载引发 EPIPE 错误