问题描述
当通过 JAVA 网站上传大文件,会报 500 错误。
问题分析
因为 Azure 的 Java 网站都是基于 IIS 转发的,所以我们需要关注 IIS 的文件上传限制以及 requestTimeout。
解决方法
-
由于 IIS 默认请求体的大小为 28.6M,若上传的文件超过这个大小,还需要在 web.config 文件中修改 IIS 请求体的大小,具体修改可以参照下面的例子:
<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="300000000"/> </requestFiltering> </security> </system.webServer> <system.web> <httpRuntime maxRequestLength="300000000" appRequestQueueLimit="100" useFullyQualifiedRedirectUrl="true" executionTimeout="600"/> </system.web> </configuration>
-
若上传大文件,建议配置 requestTimeout 为较长时间,默认是2分钟。
<httpPlatform processPath="<Your_Project_Path>inapache-tomcat-8.0.28apache-tomcat-8.0.28instartup.bat" arguments="" stdoutLogEnabled="true" stdoutLogFile="<Your_stdout_Log_File_Path>" requestTimeout="00:02:00">
-
做完上述的配置之后,建议在管理门户重启网站。