增加在 Azure 上运行的 Dockerized ASP.NET Core 站点的最大上传大小限制?

Posted

技术标签:

【中文标题】增加在 Azure 上运行的 Dockerized ASP.NET Core 站点的最大上传大小限制?【英文标题】:Increasing the maximum upload size limit for a Dockerized ASP.NET Core site running on Azure? 【发布时间】:2019-10-22 06:08:45 【问题描述】:

这是应用程序的架构:

用 ASP.NET Core 编写的 Web API。 Dockerfile 使用microsoft/dotnet:2.1-sdk 构建Web 应用程序并使用microsoft/dotnet:aspnetcore-rumtime 执行API。该应用程序已编译并放入/app。 启动API执行的命令是:ENTRYPOINT ["dotnet", "/app/WebAPI.dll"] 此 API 部署到 Azure 容器注册表(Docker 注册表)。 Azure 应用服务用于托管 API。应用服务配置为从 ACR 中提取给定容器。 API 完全按预期运行。

问题是我们需要接受大于 IIS 和 Kestrel 规定的 28.6MB 限制的帖子正文大小。我们已经尝试了这个 URL 的方法,但没有成功:https://www.talkingdotnet.com/how-to-increase-file-upload-size-asp-net-core/

将 Web.config 文件添加到项目中没有帮助,因为容器中运行的 ASP.NET Core 运行时不会拾取它。 (在容器内只有 Kestrel 正在运行) 添加[RequestSizeLimit] 属性并不能解决问题,因为我相信实际限制发生在 Azure 级别。 如果我理解正确的话,在容器内的 Kestrel 上运行的 Dockerized ASP.NET Core 应用程序是从 Azure IIS 服务器反向代理的。因此 IIS 服务器可能存在 28.6MB 的限制。 在UesKestrel 中设置大小限制也无效。 当我们尝试实现“中间件”解决方案时,我们发现Features 不是页面代码中给出的context 对象的属性。

我们需要知道如何增加最大帖子大小。如果这是在整个应用服务计划级别,则可以。由于我们正在运行容器,我们不知道可以将具有适当设置的 Web.config 文件放在哪里。

【问题讨论】:

问题解决了吗? 不幸的是,没有。我们迁移到运行 Docker Swarm 的 Azure Linux VM。老实说,成本并没有太大的不同,并且使我们可以完全控制堆栈。我们失去了一些不错的 Azure 脚本功能,但我们用 Docker Compose 和 CI 工具弥补了它。我猜这要么是设计上的限制,要么是微软的“计划”功能。 【参考方案1】:

如果您在 Azure 上使用 Kubernetes,而不是 Azure 应用服务,则可以上传超过 100MB 的大小而不会出现任何问题。 https://azure.microsoft.com/en-us/services/kubernetes-service/

【讨论】:

以上是关于增加在 Azure 上运行的 Dockerized ASP.NET Core 站点的最大上传大小限制?的主要内容,如果未能解决你的问题,请参考以下文章

vuejs 应用程序不使用 dockerized npm 运行

Dockerized webapp - 热重新加载

以编程方式在 dockerized apache 气流 python 操作符内创建 SSH 隧道

如何在 Dockerized GraphQL + Postgres 设置中运行 Prisma 迁移?

Dockerized Spring Boot 应用程序连接到主 MySQL [重复]

运行 dockerized 节点应用程序时出现“错误:spawn mongoexport ENOENT”