【问题标题】:404 when uploading a file over 100MB aspnet core 3.1上传文件超过 100MB aspnet core 3.1 时出现 404
【发布时间】: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


【解决方案1】:

对于可能遇到此问题的人来说,问题是由 OOM 引起的,因为代码中的某处存在管理不善的流。 404 响应似乎是由于 Pod 在响应完成之前失败(因为达到了内存限制)。 非常感谢 @Abdusco 为调试问题提供的宝贵帮助。

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2021-01-05
    • 2020-05-15
    • 1970-01-01
    • 2020-06-05
    • 2011-08-14
    相关资源
    最近更新 更多