我在一个 .net core 2.0 MVC 网络应用程序中上传大文件时遇到了问题。
我看了一些文章,比如这篇文章,它展示了如何增加 .net core 2.0 中的文件大小限制: Increase upload request length limit in Kestrel
所以,按照这个例子,我尝试了两种选项。 我目前在我的 Program.cs 文件中有以下代码:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options => options.Limits.MaxRequestBodySize = null)
.Build();
...而我的控制器上的ajax文件上传方法如下:
[HttpPost]
[RequestSizeLimit(1_074_790_400)]
[Route("api/article/uploadfile/{mediaType}")]
public async Task<IActionResult> UploadFile(string mediaType)
我正在使用Request.Form.Files
访问已上传的文件。
视图中的JavaScript如下:
$('#upload-videos').change(function () {
var files = $("#upload-videos").get(0).files;
uploadMedia(false, files);
})
function uploadMedia(isPhoto, files) {
var type;
if (isPhoto) {
type = "i";
}
else {
type = "v";
}
var data = new FormData();
if (files.length > 0) {
for (idx = 0; idx < files.length; idx++) {
data.append("fileImage" + idx, files[idx]);
}
$.ajax({
url: "/api/article/uploadfile/" + type,
type: "POST",
processData: false,
contentType: false,
dataType: false,
data: data,
success: function (jsonData) {
refreshUploadedImages(jsonData, isPhoto);
}
});
}
}
问题是,即使进行了增加上传限制的更改,我还是收到以下响应:
无法加载资源:服务器响应状态为500 ()
如果我在控制器方法的第一行上设置断点,它永远不会触发,所以似乎这不是代码的问题。
对于小文件大小,一切正常,但是当我尝试上传大小为538,286 KB的文件时,它会失败。
有人能帮忙解决这个问题吗?
更新: 进一步了解,当上传文件大小在122,211 KB和137,840 KB之间时,问题似乎会发生,而无论任何RequestSizeLimit设置,它都会产生错误。
更新2: 我刚刚将所有.net core和所有.net core nuget包更新到2.1版,但问题仍然存在。
413
而不是500
。 - Andreas