Spring Boot 2.0.2版本(springboot是内置tomcat,所以没有server.xml)
异常:More than the maximum number of request parameters (GET plus POST) for a single request ([10,000]) were detected.Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
解释:大概意思就是说请求参数的数量超过了默认的10,000,要想解决,建议修改maxParameterCount 。
前期自测根本没有这么大请求量,所以没有遇到过这种问题,直到用户反馈。首先是一顿百度,各种尝试均失败。最后!!!终于找到了,整理如下,(大多都说的以下两种,想要快速解决直接看第二点)
对于内置tomcat
先说下修改参数限制
1、修改yml/properties配置文件
eg:yml
server:
tomcat:
max-http-post-size: 0 #设置为0是取消参数限制,有的是-1,这和版本相关
修改配置文件我是没有生效,如果有成功的道友麻烦告知怎么修改,抱拳!
2、添加配置类,修改tomcat的MaxParameterCount
自定义tomcat容器
TomcatServletWebServerFactory !!!!只有这个生效了(适用2.0+版本),完美解决问题~
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
@Configuration
public class tomcatConfig{
@Bean
public TomcatServeletWebServerFactory tomcatServletWebServerFactory (){
TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
tomcatServletWebServerFactory.addConnectorCustomizers(connector -> {
connector.setMaxParameterCount(Integer.MAX_VALUE);
});
return tomcatServletWebServerFactory;
}
}
同理,修改附件上传的配置
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize("1024MB"); // KB,MB
/// 总上传数据大小
factory.setMaxRequestSize("1024MB");
return factory.createMultipartConfig();
}