OA请求金蝶云星空Webapi报错提示“Bad Request - Request Too Long”

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

OA请求金蝶云星空Webapi报错提示“Bad Request - Request Too Long”

@[TOC](IIS 6/7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of the request headers is too long."的错误。) # 问题原因 ``` 代码写入大量的cookie,请求时会携带着这些cookie,从而造成请求头长度超过限制。 ``` 本来以为这个问题只在Chrome中出现,后来有园友反馈Firefox也会出现这个问题。所以,要解决这个问题,必须从服务器端下手,这篇文章分享的就是如何从服务器端下手。 # 何处下手 根据IIS官方论坛的帖子(HTTP 400. The size of the request headers is too long),16K的请求头/请求长度限制由是注册表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters)中的两个参数 MaxFieldLength(请求头) 与 MaxRequestBytes(请求头与请求体) 决定的。所以,要从这两个参数下手。 # 了解下手的对象 通过微软官方文档(http://support.microsoft.com/kb/820129)进一步了解 ``` MaxRequestBytes与MaxFieldLength: MaxFieldLength - Sets an upper limit for each header. ``` 用于设置每一个请求头的字节数上限(默认16K)。 ``` MaxRequestBytes - Determines the upper limit for the total size of the Request line and the headers. ``` 用于设置请求行(请求体)与请求头的总字节数上限(默认16K)。 # 如何下手 设置注册表 下手也就是调整 MaxFieldLength 与 MaxRequestBytes 的值(这里假设将这两个值修改为32K),并使其生效。 运行regedit,进入 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters , ``` 1. 添加类型为 DWORD(32-bit)、名为 MaxFieldLength、值为十进制32768的项目; 2. 添加类型为 DWORD(32-bit)、名为 MaxRequestBytes、值为十进制32768的项目。 (都设置保存后再双击进去查看是十进制 值显示8000,无需理会即可,这是Windows显示的一个bug) ``` # 重启服务器生效 添加好了,如何让它们生效呢?最简单的方法就是重启,可是对于服务器,最不想做的就是重启。 还好,微软官方文档中提到了不重启的解决方法,需要运行四个命令: ``` net stop http net start http net stop iisadmin /y net start servicename ``` 但是第3个命令 net stop iisadmin 会停用IIS相关的所有服务,第4个命令要将IIS相关的所有服务一个一个启动。 虽然不需要重启服务器,但是这四个命令的解决方案我不喜欢。。。在网上也没找到更好的解决方法。。。 # 无需重启服务器生效 后来,通过摸索,找到了一个更简单的方法,只需三个命令: ``` net stop http net start http iisreset ``` 这个方法已经在服务器上通过实际验证。 # 重点及关键:无法停止 HTTP services服务处理办法 ``` 依赖如下服务均需要重启: Windows Remote Management (WS-Management) World Wide Web发布服务 Print Spooler IIS 管理服务 ``` 点击查看:[处理方案](https://wenku.my7c.com/article/562638534570705664?fromAction=POST_ARTICLE&productLineId=1&lang=zh-CN)

OA请求金蝶云星空Webapi报错提示“Bad Request - Request Too Long”

@[TOC](IIS 6/7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The s...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息