今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid”

看到这种错误信息,一般的开发者心中可能会猜测到两个原因

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" relaxedUrlToFileSystemMapping="true" executionTimeout="36000" delayNotificationTimeout="36000" />

  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

大致意思是,请求还没到iis,被操作系统干掉了。

这个时候再google上面搜到另外一篇文章,链接到了微软的光放技术支持

地址如下 https://support.microsoft.com/zh-cn/help/820129/http-sys-registry-settings-for-windows

两篇文章的大意都是我们需要修改注册表,综合两篇文章,大概修改是注册表如下两个值

接下来就试一下,进入注册表  CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

右击空白区域,选择Dword值,如图

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

UrlSegmentMaxCount的设置同上,值也是Dword  2048,点击ok.

修改完成只有重启http服务才能生效

  1. 依次单击“开始”、“运行”,键入 Cmd,然后单击“确定”。
  2. 在命令提示符处,键入 net stop http,然后按 Enter。
  3. 在命令提示符处,键入 net start http,然后按 Enter。

然后重启IIS。再试一下,ok了,不报错了,完美解决,在解决问题的过长中,领导给予了不少支持,实际情况不像本文描述的这么简单平凡!

记解决一次“HTTP Error 400. The request URL is invalid”的错误的更多相关文章

  1. [转]记解决一次“HTTP Error 400. The request URL is invalid”的错误

    今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid” 看到这种错误信息,一般的开发者心中可能会 ...

  2. HTTP Error 400. The request hostname is invalid

    HTTP Error 400. The request hostname is invalid 错误, 检查服务的iis服务得知,是因为在绑定主机和端口的那一步时也指定了相应的域名. 解决办法: 去掉 ...

  3. [转]HTTP Error 400. The request hostname is invalid.

    一般看到网站提示Bad Request(Invalid Hostname)错误我们都会说是iis,apache出问题了,iis出现这种问题解决办法大概是:IIS> 默认网站> > 属 ...

  4. vs2015 HTTP Error 400. The request hostname is invalid.

    <site name="> <application path="/" applicationPool="Clr4IntegratedAppP ...

  5. 使用Windows 10专业版 进行VS2017开发 遇到 HTTP Error 400. The request hostname is invalid

    使用IIS Express 支持非localhost访问 只要使用域名或者本机IP地址都无法进行 iisexpress 调试  公网ip,还是127.0.0.1都出现上面那个错误 主要是新的系统环境 ...

  6. 火狐浏览器访问网站出现 HTTP Error 400. The request is badly formed.错误,怎么解决

    今天在访问某个网站时,出现一个“HTTP Error 400. The request is badly formed.”错误, 那么应该如何解决呢? 1.问题描述: 用火狐浏览网站出现“”HTTP ...

  7. WebService:The remote server returned an error: (400) Bad Request

    开发工具:VS2010.开发组件:WebService.运行环境:Windows 今天一个同事在进行计费接口联调试时,发现了一个非常奇怪的问题:接口在家里环境测试,一切正常,但是部署到现网环境之后,连 ...

  8. Call Azure Queue get "The remote server returned an error: (400) Bad Request."

    这几天开始研究Windows Azure, 在使用Azure Queue 的时候,CreateInfNotExists 总是抛出异常 "The remote server returned ...

  9. HTTP ERROR 400 Bad Request

    一springmvc项目中我新增记录完全ok,编辑就是不行,后台方法进不去.老是报错HTTP ERROR 400 Bad Request. 经过查询,说是400表示请求中的语法错误. 我把新增记录的请 ...

随机推荐

  1. 常用git命令总结 初始化git库操作 git 子模块

    查看 git status 查看状态 Gitk 界面各个版本查看 添加 Git add filename 添加指定文件 Git add . 操作未暂存的文件 Git add -A 操作所有文件 包括删 ...

  2. jQuery属性attr

    设置多个属性/值对 为被选元素设置一个以上的属性和值. 语法 $(selector).attr({attribute:value, attribute:value ...})比如:$("im ...

  3. 外网访问ARM嵌入式Linux系统

    外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并 ...

  4. 1.1:Get Started with Unity Shaders

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 第1章开始正式进入Unity Shader的学习. 什么是Shader 本 ...

  5. springmvc多个视图解析器

    <property name="viewResolvers"> <list><!-- 多个视图解析器 --> <bean class=&q ...

  6. (转载)【UGUI】侧面滑出的菜单栏,宽度自适应

    首先看下项目效果 实现效果 发现实现效果并不难,利用动画(iTween)+UGUI 有一个长按的判断处理即可 附上项目和代码 using System.Collections; using Syste ...

  7. JavaScript(数组、Date、正则)

    数组 创建数组 // 一.自变量创建数组 // 1-通过字面量创建一个空数组 var arr1 = []; console.log(arr1) console.log(typeof arr1); // ...

  8. 解决Intellij IDEA中console窗口中文乱码的问题

    配置完tomcat之后,测试运行时,中文是乱码,如下图(自己忘截图了,图源网络,看水印) 网上其他的修改方法我就不说了,至少我试了一个都没用. 下面两个方法也是网上的,在此总结一下: 1.在idea. ...

  9. Dockerfile文件详解

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...

  10. CSS 简介 4

    css css尺寸属性 height 设置元素的高度 line-height 设置行高 max-height 设置元素的最大高度 max-width 设置元素的最大宽度 min-height 设置元素 ...