解決:The length of the query string for this exceeds the configuratiod maxQueryStringLength value

問題描述

在web網站中(asp.net MVC技術),通過get請求做一些操作時,遇到下面的錯誤:
The length of the query string for this exceeds the configuratiod maxQueryStringLength value.

解決思路

通過瀏覽器的開發者工具查看該請求。因爲是get請求,參數都可以在url中找到,整個url很長。

解決步驟
修改web.config文件,修改<system.web>內容如下

<system.web>
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151"/>
</system.web>

注意
必須保證<system.web>中只有一行的定義。
如果已經存在httpRuntime節點,則只需把上面的內容,加到已存在的配置的後面就可以了。

修改web.config文件,修改<system.webServer>內容如下

<system.webServer>
	<security>
      <requestFiltering>
        <requestLimits maxUrl="10999" maxQueryString="2097151" />
      </requestFiltering>
    </security>
</system.webServer>

修改保存後,經測試,已解決。
建議
還是改爲post請求的方式比較適合。

參考資料

Get方法長度限制

Http Get方法提交的數據大小長度並沒有限制,HTTP協議規範沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。
如:IE對URL長度的限制是2083字節(2K+35)。
下面就是對各種瀏覽器和服務器的最大處理能力做一些說明.
Microsoft Internet Explorer (Browser)
IE瀏覽器對URL的最大限制爲2083個字符,如果超過這個數字,提交按鈕沒有任何反應。

Firefox (Browser)
對於Firefox瀏覽器URL的長度限制爲65,536個字符。

Safari (Browser)
URL最大長度限制爲 80,000個字符。

Opera (Browser)
URL最大長度限制爲190,000個字符。

Google (chrome)
URL最大長度限制爲8182個字符。

Apache (Server)
能接受最大url長度爲8,192個字符。

Microsoft Internet Information Server(IIS)
能接受最大url的長度爲16,384個字符。

通過上面的數據可知,爲了讓所有的用戶都能正常瀏覽, URL最好不要超過IE的最大長度限制(2083個字符),當然,如果URL不直接提供給用戶,而是提供給程序調用,這時的長度就只受Web服務器影響了。

注:對於中文的傳遞,最終會爲urlencode後的編碼形式進行傳遞,如果瀏覽器的編碼爲UTF8的話,一個漢字最終編碼後的字符長度爲9個字符。
因此如果使用的 GET 方法,最大長度等於URL最大長度減去實際路徑中的字符數。

POST方法長度限制

理論上講,POST是沒有大小限制的。HTTP協議規範也沒有進行大小限制,起限制作用的是服務器的處理程序的處理能力。

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