如果您正在使用 .net core 并且它拒绝上传大文件,那么本文适合您。
我分享了一些处理大文件时需要牢记的建议,以及如何根据我们的需求配置我们的服务,并提供无限制的服务。
开始前的要求:
下载:https://dotnet.microsoft.com/download/dotnet/3.1
可选: https://git-scm.com/downloads
示例代码:https://download.youkuaiyun.com/download/hefeng_aspnet/90138207
对于支持大文件上传的服务,我考虑了三件事:
1- Program.cs 类
2- Startup.cs 类
3- 最重要的:您托管服务的位置。 在使用 aws ser 的情况下,托管服务的实例可以处理文件非常重要。
1- Program.cs 类和 IHostBuilder 方法
获取或设置允许的任何请求主体的最大大小(以字节为单位)。设置为 null 时,请求主体的最大大小不受限制。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
});
});
2- Startup.cs 类和 ConfigureServices 方法。
services.Configure<IISServerOptions>(options => options.MaxRequestBodySize = int.MaxValue);
services.Configure<KestrelServerOptions>(options =>
{
options.Limits.MaxRequestBodySize = int.MaxValue; // if don't set default value is: 30 MB
});
services.Configure<FormOptions>(x =>
{
x.ValueLengthLimit = int.MaxValue;
x.MultipartBodyLengthLimit = int.MaxValue;
x.MultipartBoundaryLengthLimit = int.MaxValue;
x.MultipartHeadersCountLimit = int.MaxValue;
x.MultipartHeadersLengthLimit = int.MaxValue;
});
options.Limits.MaxRequestBodySize = null;
});
3- 处理大文件最糟糕的事情是,如果它使您正在处理的实例爆炸,只需单击一下就可以使所有内容爆炸。有可能在生产中体验到巨大的负载,在达到那个环境之前,幸运的是,我们经历了其他环境,哈哈!在第一次测试中,我在大约有 10 个服务的 t2.medium 实例中爆炸了所有内容。我们传递给 t2.xlarge 实例并进行处理,没有问题。
t2.medium → t2.xlarge
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。