解决IIS站点get请求链接过长导致的404.15问题

BUG:

遇到个偶发的bug,大部分情况能正常调用接口,偶尔有几次失败,而且代码中打印的日志找不到;说明请求没有到应用中,于是看iis日志,报错404,把链接拷贝出来,放浏览器刷新,就出现如下错误。

解决IIS站点get请求链接过长导致的404.15问题

分析:

根据上述图片中的提示,分析是请求字符串过长,而且不是浏览器报错,而是客服端报错,于是猜测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也加大。


【AD】美国洛杉矶/香港/日本VPS推荐,回程电信CN2 GIA线路,延迟低、稳定性高、免费备份_搬瓦工

【AD】炭云:36元/年/1GB内存/20GB SSD空间/500GB流量/5Gbps端口/KVM/香港/国际线路LUMEN