网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入 N 多个关键词,我为了性能等考虑,会限制个数,比如每次批量查询仅限 50 个以内,但还是有意外发生,有些关键词可能会很长,即会引发”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 |
开干!
进入注册表 CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
右击空白区域,选择 Dword 值,新建名称 UrlSegmentMaxLength,双击键名,选择十进制,值设置成2048,然后点击 确认。
同样,再新建名称 UrlSegmentMaxCount,双击键名,选择十进制,值设置成2048,然后点击 确认。
如图
需要注意的是,修改完以后不会立即生效,需重启 HTTP 服务。不想那么麻烦,也可以简单粗暴一下,重复服务器即可。
若不想或不允许重启服务器,可以按如下步骤来重启 HTTP 服务。
重启 HTTP 服务、键入和所有相关的 IIS 服务,请执行以下步骤:
选择 “开始”,选择 “运行”,键 入 Cmd,然后选择 “确定”。
停止 HTTP 服务:在命令提示符处,键入 net stop http,然后按 Enter。系统提示会停止相关联的服务器,输入 y 确认继续
启动 HTTP 服务:在命令提示符处,键入 net start http,然后按 Enter。
停止 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。
再来测试一下,访问正常啦!文章来源:https://www.toymoban.com/news/detail-495243.html
来源:由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表 https://www.iwmyx.cn/yyljdzcdgc.html文章来源地址https://www.toymoban.com/news/detail-495243.html
到了这里,关于由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!