增加使用 Azure 部署的 K8s 集群中的最大文件上传大小(使用 C# 和 React 的 ASP.NET Core 中的项目)

Kai*_*lor 1 c# azure azure-web-app-service asp.net-core azure-aks

如何增加 Azure 中的文件上传大小限制?它的上限约为 1MB。我尝试查看 Azure 门户中的各种设置,但找不到任何内容。我认为问题出在云环境上,因为我在本地没有问题。

我有一个 C# Web 应用程序,它使用 ASP.NET Core 和 React with .tsx。当我在本地运行该程序时,我可以上传最大大小为 28MB 的文件,这是 ASP.NET Core 的默认限制。但是,当我使用 Azure 部署到 K8s 集群(Kubernetes 服务)时,Web 应用程序只能上传大小最大约为 1MB 的文件。

我可以上传 984KB .jpg 文件。当我尝试上传 1,043KB .png(或任何更大的文件)时,响应是

413请求实体太大

nginx/1.17.7

我看过这个问题的解决方案

我在发布的代码片段中循环的文件对象是 IList 类型,我是通过在控制器中转换 Request.Form.Files 来获得的。我为什么要这样做,我不记得了。无论如何,将文件列表保留为由 MVC 绑定的默认 IFormFileCollection(Request.Form.Files 上的类型)似乎可以解决此问题。它还解决了我遇到的某些文件扩展名无法上传的另一个问题。

然而,我习惯于IFormFile不进行强制转换而直接上传。前端 .tsx 有一个带有dropzone输入组件的表单。更改事件e.currentTarget.files返回一个FileList. 上传文件命令和控制器都专门IFormFile使用IFileSystem.

Chr*_*jen 5

您没有提供太多详细信息,所以我猜您正在使用如下所示的默认设置:

  • 您有一个 nginx 入口服务
  • 您的应用程序在此代理后面运行

正如您在错误消息中看到的,问题不是您的 asp.net core 应用程序,而是它前面的 nginx 入口。

要解决这个问题,您必须配置 nginx 入口以允许更大的上传。

在我们的配置中,看起来像这样

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: 500m
Run Code Online (Sandbox Code Playgroud)

那么修复它的步骤:

  • 更新您的入口清单文件
  • 使用 kubectl 应用更改

文件: