今天将图片服务切到使用了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. ubuntu下安装Python3

    到www.python.org网站下载python3.3.2 Gzipped source tar ball (3.3.2) (sig), ~ 16 MB 解压tar vxzf Python3.3.2 ...

  2. Ubuntu上pip安装uwsgi失败的原因之一(未联网)

    ubuntu@ubuntu:~$ sudo pip install uwsgi 报错:The directory '/home/ubuntu/.cache/pip/http' or its paren ...

  3. 如何设置Mac电脑的DNS

    这两天我的Mac不能上网了,虽然正常连接了internet,但是网页.App Store.以及各种应用都无法连接到网络. 这是什么问题呢? 于是,我就寻着下面的方法对我的Mac进行了体检: 首先找到右 ...

  4. 手动安装vue-devtools

    第一步:找到vue-devtools的github项目,并将其clone到本地. vue-devtools git clone https://github.com/vuejs/vue-devtool ...

  5. Java代理和动态代理机制分析和应用

    本博文中项目代码已开源下载地址:GitHub Java代理和动态代理机制分析和应用 概述 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息 ...

  6. 转:Eclipse 各种小图标的含义

    原文地址:https://www.cnblogs.com/widget90/p/7592507.html Eclipse 各种小图标的含义,记录一下. Eclipse的Package Explorer ...

  7. Java之旅_高级教程_实例_数组

    摘自:http://www.runoob.com/java/java-examples.html 1.数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 bi ...

  8. Android SDK 环境变量

    系统变量 PATH中加入 C:\Program Files (x86)\Android\android-sdk\platform-tools 和 C:\Program Files (x86)\Andr ...

  9. # 20165225 《Java程序设计》第一周学习总结

    20165225 <Java程序设计>第一周学习总结 1.视频与课本中的学习: 首先是为了运行和开发Java分别安装了JRE和JDK,具体做法在老师给的<Java2 实用教程(第五版 ...

  10. Django 之Redis配置

    目的:访问服务器频繁的读取数据库 ,会耗损服务器性能及降低用户体验,为此引入Redis 1,安装 redis(2.10.6兼容性更好) pip install redis 2,settings.py配 ...