由於鏈接地址長度過長引起的”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

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