c# - 如何在 asp.net core 2+ 中增加上传大小?请求的实体太大
问题描述
我想在 ASP.NET Core 2.0 Web 应用程序中增加 30MB 的默认上传大小。建议的解决方案,例如添加 [RequestSizeLimit(4_100_000_000)] 或添加
services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 4074790400);
不能在 asp.net core 2.0 中工作。我猜这些解决方案适用于 .NET Core 1+ 版本。
我还将这个添加到 Program.cs 中,这也是建议的解决方案:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = 4120100000;
})
.Build();
虽然在本地 - 使用 Visual Studio docker 调试器,我能够上传大于 30 MB 的文件,但在 AWS 环境中,我再次收到 413 Request Entity Too Large 错误。
解决方案
在 aws 18.04 ubuntu 上遇到了同样的问题,运行 .net core 2.2 和 nginx 1.16.1 作为前端服务器和反向代理。
通过做两件事解决了这个问题:
1)配置 nginx 的最大请求大小- 确保前端 nginx 不会阻止请求到达反向代理后面的应用程序。为此,我添加了 'adding client_max_body_size 30M; ' 在服务器块内,但还有更多方法可以做到这一点,请参阅:https ://www.tecmint.com/limit-file-upload-size-in-nginx/ )
2) 向 Main 添加相同的代码,有 1 个小的变化 - 我没有指定请求大小,而是插入了一个空值,这导致 kestrel 假定它是最大可能值 (afaik)
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
})
.Build();
推荐阅读
- c# - 如何将此表达式转换为 LINQ
- javascript - toDoList 和搜索添加的项目后的问题,当输入为空时应该回到上一个索引位置
- powershell - 使用 Powershell 枚举 Azure 存储帐户
- angular - Dart Web “传递库具有此平台不支持的 sdk 依赖项”
- pandas - 滚动日期范围内的价格变化百分比
- reactjs - 侧边栏中的动态和非动态路由
- javascript - 带有 Webpack 3.7 的 Angular 8 渲染速度极慢
- amazon-web-services - 为什么我在 AWS 中当前登录的用户没有 IAM 用户?
- javascript - JavaScript Radio Toggle 根据选中显示不同的表单字段
- audio - 如何在插入时进行 USB 自动播放