猿问

.net Core 2.0 文件上传大小限制

我在 .net core 2.0 MVC Web 应用程序中上传大文件时遇到问题。


我看过一些文章,比如这篇文章,它展示了如何在 .net core 2.0 中增加文件大小限制: 增加 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 的文件时,它会失败。


有人能帮忙吗?


更新:有关更多信息,无论任何 RequestSizeLimit 设置如何,当上传文件大小介于 122,211 KB 和 137,840 KB 之间时,似乎都会出现此问题,并且始终出错。


更新 2:我刚刚将所有 .net core 和所有 .net core nuget 包更新到 2.1,但问题仍然存在。


SMILET
浏览 247回答 2
2回答

心有法竹

为了帮助其他有同样问题的人,我在这里找到了答案:&nbsp;Max upload size for ASP.MVC CORE website事实证明,您需要像这样删除主体长度限制:services.Configure<FormOptions>(x&nbsp;=>&nbsp;x.MultipartBodyLengthLimit&nbsp;=&nbsp;1_074_790_400);FormOptions可以在Microsoft.AspNetCore.Http.Features命名空间中找到。
随时随地看视频慕课网APP
我要回答