BUG:
遇到个偶发的bug,大部分情况能正常调用接口,偶尔有几次失败,而且代码中打印的日志找不到;说明请求没有到应用中,于是看iis日志,报错404,把链接拷贝出来,放浏览器刷新,就出现如下错误。
分析:
根据上述图片中的提示,分析是请求字符串过长,而且不是浏览器报错,而是客服端报错,于是猜测IIS存在get请求默认长度,查询资料,果然默认长度为2048,而上述请求在不同条件下长度在1900~2200之间,于是就出现了偶尔无法正常返回的bug。
解决:
在IIS站点的web.config配置中修改
1、搜索system.webServer,在system.webServer节点下加入maxQueryString配置,如下:
<security> <requestFiltering > <requestLimits maxQueryString="10240"></requestLimits> </requestFiltering> </security>
2、搜索httpRuntime ,在<system.web>节点下的httpRuntime 节点中配置 :maxRequestLength="20480" maxQueryStringLength="10240",如下:
<system.web> <httpRuntime enableVersionHeader="false" maxRequestLength="20480" maxQueryStringLength="10240" /> </system.web>
备注:上述修改配置1为IIS允许请求字符串长度,根据自己的需求修改值;只增加1时,应用能接收到请求并报错maxQueryString不能大于maxQueryStringLength,于是相应的把maxQueryStringLength也加大。
扫码关注微信公众号--IT老五
微信扫一扫关注公众号,获取更多实用app,订阅地址不定时更新