由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入 N 多个关键词,我为了性能等考虑,会限制个数,比如每次批量查询仅限 50 个以内,但还是有意外发生,有些关键词可能会很长,即会引发”HTTP Error 400. The request URL is invalid”的错误。如图

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

 

按以前的经验呢,先检查了网站程序上的 web.config 文件,httpRuntime 节点下的 maxUrlLength 配置以及 security 节点下的 requestFiltering》maxUrl  ,

确认都以及设置过了

 <httpRuntime targetFramework="4.6.1" enableVersionHeader="false" requestPathInvalidCharacters="" requestValidationMode="2.0" maxQueryStringLength="2097151000" maxUrlLength="2097151000" maxRequestLength="2097151000" relaxedUrlToFileSystemMapping="true" executionTimeout="36000" delayNotificationTimeout="36000" />

 

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

 

还是出现”HTTP Error 400. The request URL is invalid”的错误,最后问度娘、谷歌,最终找到解决方法:修改服务器的注册表

Http.sys Windows 的注册表设置(https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/iis/iisadmin-service-inetinfo/httpsys-registry-windows)

可以在以下注册表项下创建以下 DWORD 注册表值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

注册表 默认值 有效值范围 注册表项函数 WARNING 代码
UrlSegmentMaxCount 255 0 – 16,383 段 最大 URL 路径段数。 如果为零,则计数受最大值的 ULONGb 约束。 1
UrlSegmentMaxLength 260 0 – 32,766 chars URL 路径段中的最大字符数 (URL) 中斜杠之间的区域。 如果为零,则由最大值限制的 ULONG 长度。 1

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

开干!

进入注册表  CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

右击空白区域,选择 Dword 值,新建名称 UrlSegmentMaxLength,双击键名,选择十进制,值设置成2048,然后点击 确认。

同样,再新建名称 UrlSegmentMaxCount,双击键名,选择十进制,值设置成2048,然后点击 确认。

如图

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表 由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

 

需要注意的是,修改完以后不会立即生效,需重启 HTTP 服务。不想那么麻烦,也可以简单粗暴一下,重复服务器即可。

若不想或不允许重启服务器,可以按如下步骤来重启 HTTP 服务。

 

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

 

重启 HTTP 服务、键入和所有相关的 IIS 服务,请执行以下步骤:

选择 “开始”,选择 “运行”,键 入 Cmd,然后选择 “确定”。

停止 HTTP 服务:在命令提示符处,键入 net stop http,然后按 Enter。系统提示会停止相关联的服务器,输入 y 确认继续

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

启动 HTTP 服务:在命令提示符处,键入 net start http,然后按 Enter。

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表

停止 IIS 服务:在命令提示符处,键入 net stop iisadmin /y,然后按 Enter。

备注:依赖于 IIS 管理员服务服务的任何 IIS 服务也将停止。 请注意停止 IIS 管理员服务时停止的 IIS 服务。 下一步将重启每个服务。

重启步骤 4 中已停止的 IIS 服务。 为此,请在命令提示符处键 net start servicename 入,然后按 Enter。 在命令中, servicename 是要重启的服务的名称。 例如,若要重启万维网发布服务服务,请键入 net start World Wide Web Publishing Service,然后按 Enter。

 

再来测试一下,访问正常啦!

 

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...