【发布时间】:2021-06-30 17:44:47
【问题描述】:
我正在使用 mvc 开发一个 asp.net core 3.1 应用程序,我应该上传最大 200mb 的文件。 上传高达 100mb 的作品,但上面的任何东西都会给我一个 404。
我会直接说代码不是我写的,并且使用 Kapitan 来驱动大部分配置,这对我来说是全新的。
这是一个模拟形式:
@using (@Html.BeginForm("Create", "Model", FormMethod.Post, htmlAttributes: new { @class = "form", enctype = "multipart/form-data" }))
{
<div class="form-group">
@Html.Label("x File")
@Html.TextBoxFor(x => x.Model.x, htmlAttributes: new
{
type = "file",
accept = ".x",
required = "true"
})
</div>
}
控制器:
[HttpPost]
[RequestFormLimits(MultipartBodyLengthLimit = 568435456)]
public async Task<IActionResult> Create(X x)
{
}
我尝试过的事情: 添加 web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpRuntime maxRequestLength="307200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
启动:
services.Configure<FormOptions>(options =>
{
options.MultipartBodyLengthLimit = 568435456;
});
更改 proxy-body-size 的 yml 文件配置删除了我以前从 nginx 获取的 413,但没有删除 404。
更新
在隐身状态下,响应变为:
502 错误网关 nginx/1.17.10
原因可能是什么?我尝试了所有可以在网上找到的方法。
提前谢谢你。
【问题讨论】:
-
它可以在您的本地机器上运行吗? (不涉及 IIS、nginx 或其他反向代理)
-
是的,它通过了控制器(我无法测试它是否进入了 s3 存储,因为它也在 kapitan 中配置)@abdusco
-
得到 404 是非常奇怪的,并不是任何理智的服务都会返回的响应。例如,我会先尝试通过将应用程序连接到我自己的 S3 存储桶来排除应用程序的任何问题,然后再逐个服务。
-
你可以快速启动一个本地 MinIO 实例并测试这个理论。 docs.min.io/docs/minio-quickstart-guide.html
-
我会试试的。有趣的是,我可以同时上传两个 75mb 的文件,但不能上传超过 100mb 的文件。
标签: asp.net-core nginx kubernetes model-view-controller file-upload