遇到这个问题,从字面意思来看,是请求头过长造成的,于是我让他检查下请求头。
我们知道,当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发上面所说的那个错误。
这个请求头的长度限制是由注册表(HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\HTTP\Parameters)中的两个参数 MaxFieldLength(请求头) 与 MaxRequestBytes
(请求头与请求体) 决定的。
所以,解决这个问题有两种方法,
一是检查请求头,减小请求头的长度。
二是修改注册表中的两个参数 MaxFieldLength和MaxRequestBytes。
但有时候请求头的长度实在无法缩短减小,那么就只有修改注册表参数了。
那么如何修改操作呢?
在注册表里找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters :
1. 添加类型为 DWORD(32-bit)、名为 MaxFieldLength、值为十进制32768(32K)的项目;
2. 添加类型为 DWORD(32-bit)、名为 MaxRequestBytes、值为十进制32768(32K)的项目。
添加好了是不是就是生效了呢?并没有,有两种办法让它生效:一是重启服务器,二是运行三个命令:
net stop http
net start http
iisreset
到此,就彻底解决了这个问题了。