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

简介: 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://techcommunity.microsoft.com/blog/iis-support-blog/understanding-and-resolving-the-http-413-request-entity-too-large-in-iis/4227944

 



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

相关文章
|
消息中间件 弹性计算 Java
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
|
对象存储 开发者
对象OSS生命周期(LifeCycle)管理功能|学习笔记
快速学习对象 OSS 生命周期(LifeCycle)管理功能
3785 0
对象OSS生命周期(LifeCycle)管理功能|学习笔记
|
9月前
|
人工智能 前端开发 Go
前端开发必备的 VSCode 插件推荐(第一期)
本文推荐三款提升前端开发效率的VSCode插件:Live Server实现网页实时预览,Tencent Cloud AI Code Assistant提供智能补全与代码优化,WakaTime记录编程时长。助力开发者高效编码,欢迎交流分享使用心得。
937 0
前端开发必备的 VSCode 插件推荐(第一期)
|
2月前
|
人工智能 安全 API
阿里云通义千问大模型完整解析:全系列模型能力、核心优势、行业落地与选型定价全梳理
生成式人工智能技术持续迭代,大模型已经从概念阶段深度走进各类业务生产环节,不管是个人开发者搭建AI应用、中小团队做业务智能化改造,还是大型企业完成数字化转型升级,都需要选择适配自身业务的大模型底座。通义千问,代号Qwen,是阿里云完全自主研发的大模型家族,并非单一对话模型,而是一套覆盖文本、代码、图像、音频、视频、超长文档处理、智能体执行的完整模型产品矩阵,依托阿里云百炼大模型服务平台对外提供服务,支持在线调用API、模型微调、私有知识库搭建、智能体编排、私有化部署等多样化能力,是国内企业级调用规模位居前列的大模型体系。
1719 2
|
11月前
|
存储 安全 API
微服务安全之 OAuth2 协议深度解析:从原理到实战落地
本文深入解析OAuth2协议在微服务安全中的应用,涵盖核心概念、四种授权模式(授权码、简化、密码、客户端凭证)、令牌机制(JWT结构、存储管理)、资源服务器实现及安全最佳实践,结合Spring Security实战代码,助力开发者构建安全可靠的系统。
1414 5
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
14269 4
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
Web App开发 移动开发 前端开发
uniapp环境H5运行及发行(入门必学)
uniapp环境H5运行及发行(入门必学)
3063 5
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
Java 程序员 API
《Spring Boot应用进阶:打造优雅的错误处理机制与全局异常拦截器》
《Spring Boot应用进阶:打造优雅的错误处理机制与全局异常拦截器》
626 0