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 错误

如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许

将 Asp.Net Core 2.2 App 迁移到 3.1 时的整数序列化 [关闭]