设为首页 收藏本站
查看: 970|回复: 0

[经验分享] 记解决一次“HTTP Error 400. The request URL is invalid”的错误

[复制链接]

尚未签到

发表于 2017-12-29 09:37:13 | 显示全部楼层 |阅读模式
  今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid”
DSC0000.png

  看到这种错误信息,一般的开发者心中可能会猜测到两个原因
  1.链接中有特殊字符
  2.链接长度过长(似乎长度过长也不是这个错,模糊不清,忘记了)
  错误图片的地址如下:http://{host}/SearchService.svc/rest/pic600x320/png/kv3hcxmnCmISVvFKojNBGpkN44MRx71vV4v7Qu7ikclbic2vX5Axnm8RxwhLoWyehsSz4J%C2%A72F6h4eQgvkrbzuKGR6y7sszK1KUY75RqxylZMumapwVQttfllaSPXwoRGEeVexDqjmMZSERPquL3uLZbv6Vxdx52nRDUW90SVVYeqkHZbx2w3T1coqt2v036tfaZ%C2%A72D8GBlPbIVJuhSFU5GA8116z8FkV4%C2%A72kDtsxSXy9XTFIziTToRpbQEkp7497O6q99
  接下来就开始了按照我们所能遇见的错误原因进行排查
  1.查看url,并没有特殊字符(排除这个原因)
  2.url咋一看确实很长,那我们删除参数的一半长度再请求。结果是可以成功,然后通过不断的加字符,发现长度超过339就报这个错,而339后面也没啥特殊字符,所以我们基本确定错误原因是应为url过长。
  接下来就是解决相关问题
  然后就是各种百度,查看相关修改querystring长度限制的配置
  然后就修改web.config
  1.修改  httpRuntime 节点下面增加  maxQueryStringLength,maxRequestLength配置
  

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" maxQueryStringLength="2097151" maxUrlLength="2097151" maxRequestLength="2097151">  

  2.修改system.webServer节点,如下
  

<security>  <requestFiltering allowDoubleEscaping="true" allowHighBitCharacters="true"  >
  <requestLimits maxAllowedContentLength="2097151" maxQueryString="2097151" maxUrl="2097151" />
  </requestFiltering>
  </security>
  

  满怀期待的保存,运行,错误依旧,好像并没有什么卵用
  这个时候就开始纳闷了,为啥不行,会不会没有生效,想到这儿可能就有很多人像我一样,想到了iis的全局设置,会不会该项设置不能被覆盖,我们用的依旧是全部设置的值
  不用猜测,查看一下就知道了(注意,查看的requestFiltering是位于 system.webServer下,不要看错节点了)
  

  <section name="requestFiltering" overrideModeDefault="Allow"  />  

  如果是关闭的,overrideModeDefault的值是Deny,Allow表示我们该配置会以我们站点具体配置为准。
  那么一切都是正常的啊,为啥就是报错呢?!
  最后stackoverflow上面一个没有被采纳的回到引起了我的注意
  链接 https://stackoverflow.com/questions/8447698/the-request-url-is-invalid-in-iis-7
DSC0001.png

  大致意思是,请求还没到iis,被操作系统干掉了。
  这个时候再google上面搜到另外一篇文章,链接到了微软的光放技术支持
  地址如下 https://support.microsoft.com/zh-cn/help/820129/http-sys-registry-settings-for-windows
  两篇文章的大意都是我们需要修改注册表,综合两篇文章,大概修改是注册表如下两个值
DSC0002.png

  接下来就试一下,进入注册表  CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
  右击空白区域,选择Dword值,如图
DSC0003.png

  新建名称 UrlSegmentMaxLength,值设置成2048,然后点击ok
DSC0004.png

  UrlSegmentMaxCount的设置同上,值也是Dword  2048,点击ok.
  修改完成只有重启http服务才能生效


  • 依次单击“开始”、“运行”,键入 Cmd,然后单击“确定”。
  • 在命令提示符处,键入 net stop http,然后按 Enter。
  • 在命令提示符处,键入 net start http,然后按 Enter。
  然后重启IIS。再试一下,ok了,不报错了,完美解决,在解决问题的过长中,领导给予了不少支持,实际情况不像本文描述的这么简单平凡!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429255-1-1.html 上篇帖子: WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障 下篇帖子: 解决:HTTP 错误 404.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表