網(wǎng)站中,設(shè)計了一個批量搜索的功能,用戶可以輸入多個關(guān)鍵詞進行批量查詢搜索,但不出意外的話還是出意外了,有些用戶可能會輸入 N 多個關(guān)鍵詞,我為了性能等考慮,會限制個數(shù),比如每次批量查詢僅限 50 個以內(nèi),但還是有意外發(fā)生,有些關(guān)鍵詞可能會很長,即會引發(fā)”HTTP Error 400. The request URL is invalid”的錯誤。如圖
按以前的經(jīng)驗?zāi)?,先檢查了網(wǎng)站程序上的 web.config 文件,httpRuntime 節(jié)點下的 maxUrlLength 配置以及 security 節(jié)點下的 requestFiltering》maxUrl? ,
確認都以及設(shè)置過了
<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>
還是出現(xiàn)”HTTP Error 400. The request URL is invalid”的錯誤,最后問度娘、谷歌,最終找到解決方法:修改服務(wù)器的注冊表。
Http.sys Windows 的注冊表設(shè)置(https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/iis/iisadmin-service-inetinfo/httpsys-registry-windows)
可以在以下注冊表項下創(chuàng)建以下 DWORD?注冊表值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
注冊表項 | 默認值 | 有效值范圍 | 注冊表項函數(shù) | WARNING 代碼 |
---|---|---|---|---|
UrlSegmentMaxCount | 255 | 0 – 16,383 段 | 最大 URL 路徑段數(shù)。 如果為零,則計數(shù)受最大值的?ULONGb 約束。 | 1 |
UrlSegmentMaxLength | 260 | 0 – 32,766 chars | URL 路徑段中的最大字符數(shù) (URL) 中斜杠之間的區(qū)域。 如果為零,則由最大值限制的?ULONG 長度。 | 1 |
開干!
進入注冊表 ?CMD =》 regedit=》HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
右擊空白區(qū)域,選擇 Dword 值,新建名稱?UrlSegmentMaxLength,雙擊鍵名,選擇十進制,值設(shè)置成2048,然后點擊 確認。
同樣,再新建名稱?UrlSegmentMaxCount,雙擊鍵名,選擇十進制,值設(shè)置成2048,然后點擊 確認。
如圖
需要注意的是,修改完以后不會立即生效,需重啟 HTTP 服務(wù)。不想那么麻煩,也可以簡單粗暴一下,重復(fù)服務(wù)器即可。
若不想或不允許重啟服務(wù)器,可以按如下步驟來重啟 HTTP 服務(wù)。
重啟 HTTP 服務(wù)、鍵入和所有相關(guān)的 IIS 服務(wù),請執(zhí)行以下步驟:
選擇 “開始”,選擇 “運行”,鍵 入 Cmd,然后選擇 “確定”。
停止 HTTP 服務(wù):在命令提示符處,鍵入?net stop http,然后按 Enter。系統(tǒng)提示會停止相關(guān)聯(lián)的服務(wù)器,輸入 y 確認繼續(xù)
啟動 HTTP 服務(wù):在命令提示符處,鍵入?net start http,然后按 Enter。
停止 IIS 服務(wù):在命令提示符處,鍵入?net stop iisadmin /y,然后按 Enter。
備注:依賴于 IIS 管理員服務(wù)服務(wù)的任何 IIS 服務(wù)也將停止。 請注意停止 IIS 管理員服務(wù)時停止的 IIS 服務(wù)。 下一步將重啟每個服務(wù)。
重啟步驟 4 中已停止的 IIS 服務(wù)。 為此,請在命令提示符處鍵 net start servicename 入,然后按 Enter。 在命令中, servicename 是要重啟的服務(wù)的名稱。 例如,若要重啟萬維網(wǎng)發(fā)布服務(wù)服務(wù),請鍵入 net start World Wide Web Publishing Service,然后按 Enter。
再來測試一下,訪問正常啦!文章來源:http://www.zghlxwxcb.cn/news/detail-495243.html
來源:由于鏈接地址長度過長引起的”HTTP Error 400. The request URL is invalid”錯誤解決辦法:修改注冊表 https://www.iwmyx.cn/yyljdzcdgc.html文章來源地址http://www.zghlxwxcb.cn/news/detail-495243.html
到了這里,關(guān)于由于鏈接地址長度過長引起的”HTTP Error 400. The request URL is invalid”錯誤解決辦法:修改注冊表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!