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
});
}