asp.net core 上传大文件

公司有个基于.net core 3.1 开发的产品,其中有个上传资的功能,一般就是上传个word,PDF之类文件,不会太大,从来没有反馈过这块有啥问题。这次在现场的同事突然反馈说文件传不上去。我试了下没问题,再一看文件大小,我传的是10M大小的一个word文档,他上传的是一个33M的word文档。 看了下nginx配置:

Nginx
client_max_body_size 20m;

肯定传不上去。改成500M,然后再传,发现还是不行。 应该是asp.net core有限制,查了下,

MaxRequestBodySize 默认设置为28.6M,也改成500M,33M的文件能上传了。想想反正都改成500M了,试试更大的文件,选了个200M的文件,上传失败。 看了.net core的错误日志,又查了下,还有个MultipartBodyLengthLimit的设置,默认是128M,也改成500M,再测试,450M的文件也能上传了。
MaxRequestBodySize在Program.cs中设置:

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WebApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.ConfigureKestrel(serverOptions =>
                    {
                        serverOptions.Limits.MaxRequestBodySize = 500 * 1024 * 1024; // 这儿设置为500M
                    });
                });

    }
}

MultipartBodyLengthLimit在Startup.cs中设置:

C#
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.Configure<FormOptions>(x =>
            {
                x.ValueLengthLimit = int.MaxValue; // 设置表单值的最大长度(字节)
                x.MultipartBodyLengthLimit = 500 * 1024 * 1024; // 设置多部分请求体的最大长度(字节),这里设置为500M
            });
        }

Loading

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注