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

网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入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。

 

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

 
来源:由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表 https://www.iwmyx.cn/yyljdzcdgc.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章