ajax - 抛出异常:大文件上传 ASP.Net 核心上 System.Private.CoreLib.dll 中的“System.IO.InvalidDataException”
问题描述
我正在尝试使用 IIS express 服务器和 ASP.NET 核心后端上传大小为 543 MB 的文件夹。上传由 ajax 调用启动。如果我将文件夹分成 100 MB 的块并从前端上传这 100 MB 的块,一切正常。但是正如这里所指出的,我们可以将大型 ajax 调用拆分为多个较小的调用以更快地加载数据吗?拆分和拨打多个电话没有明显的优势,最终可能会成为一种负担。
所以现在我正在尝试将文件夹作为一个 ajax 调用上传。问题是上传开始了,我可以在进度条中看到它的进度,但是在上传了 30% 之后,我从服务器获得了 Http 状态代码 500。
服务器给出以下错误:
Exception thrown: 'System.IO.InvalidDataException' in System.Private.CoreLib.dll
据我了解,此问题与 IIS 和 ASP.NET 核心施加的文件大小限制有关。为了解决这个问题,我在我的解决方案中添加了以下代码,但没有成功。
上传控制器.cs
[HttpPost]
[RequestSizeLimit(1073741824)]
[RequestFormLimits(MultipartBodyLengthLimit = 1073741824)]
public async Task<ActionResult> PostAsync(){
await Request.ReadFormAsync();
System.Diagnostics.Debug.WriteLine(Request.Form.Files.Count);
return Ok("Files uploaded.");
}
网络配置
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- Handle requests up to 2 GB -->
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
启动.cs
services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = null; });
services.Configure<FormOptions>(options =>
{ options.MultipartBodyLengthLimit = 2147483648;
options.ValueLengthLimit = 1073741824;
options.MultipartHeadersLengthLimit = 1073741824;
});
services.Configure<IISServerOptions>(options =>
{
options.MaxRequestBodySize = null;
});
启动文件当然还有其他配置,但这些是我为解决这个问题而添加的。我在这里先向您的帮助表示感谢!!
PS:如果需要任何其他信息,请告诉我。
解决方案
您可以尝试在 Upload() 操作之上添加 [RequestFormLimits] 属性,如下所示:
[HttpPost]
[RequestFormLimits(MultipartBodyLengthLimit = 2147483648)]
public IActionResult Upload()
{
...
}
更多信息可以参考这个链接:https ://stackoverflow.com/a/62555240/13336642 。
推荐阅读
- html - 将 CSS 文件链接到 Hugo 中的部分模板
- python - 使用 OLS 预测双周数据
- c++ - 如何在没有setter的类内部设置类的成员变量?
- mongodb - 将 GraphQL 与 MongoDB 连接时为空
- r - 如何确保输入可以按有状态 LSTM 中的批量大小进行划分?
- uwp - .NET UWP NavigationView.HeaderTemplate TextBlock 从 Frame 中的页面设置
- java - Plivo API 的测试凭证
- apache-spark - Hadoop/Spark:复制因子和性能有什么关系?
- java - BufferedReader 不返回
- javascript - 复选框上的表格行颜色更改以及从 MySQL 中选择时